Evaluation sandbox — TTPOST E-Mall for RFQ NPICTT/TTPOST/EMALL/RFQ/2026-001. A working instance: what you enter is stored and visible to other evaluators.
TTPOST E-Mall

Security

Controls implemented in this sandbox, against the regimes named in RFQ Submission Requirement 10: T&T data protection legislation, PCI DSS, and TT-CSIRT security review. Everything below is verifiable from the running application — check the response headers.

Implemented

Content-Security-Policy default-src 'self'. No third-party origin may supply script, style, font, or frame content. Inline scripts run only with a per-request nonce.
No third-party scripts Tailwind is compiled to a static stylesheet; Alpine, Lucide and Leaflet are served from this origin; web fonts are self-hosted. The application loads no CDN.
Transport HTTPS enforced by redirect, HSTS for one year including subdomains, and the session cookie marked Secure whenever the browser leg is encrypted — including behind a TLS-terminating proxy.
Session HttpOnly and SameSite=Lax session cookie; server-side session state.
CSRF A masked synchroniser token is required on every state-changing request. Requests without it are rejected with 422.
Authorisation Role guards run as middleware on route groups, before any controller executes.
Publication gate An unverified vendor cannot publish a product. The rule is enforced in the repository layer, so it holds regardless of what the request asks for.
Passwords Stored as bcrypt hashes via PHP's password_hash. Never logged, never returned.
Input handling Typed form models with declared validation rules; all database access through bound parameters.
Other headers X-Content-Type-Options, X-Frame-Options DENY, Referrer-Policy, Permissions-Policy, and cross-origin isolation headers. The PHP version banner is removed.
Security logging Sign-in success and failure, sign-out, authorisation denials, vendor status changes, and blocked publication attempts are logged with account, route, and IP.
Recommendations Similarity is a term-frequency vector model computed on this server. No external service is called and no product data leaves the origin. Ranking weightings are set by the operator, not fixed by the supplier.
Walkthrough forms The design-walkthrough screens accept input and carry it through a journey, held in your own session only. Nothing entered there is written to the database or visible to anyone else. The functional flows — registration, catalogue, cart, checkout, vendor and administrator tools — are real and stored in MySQL.

Stated exceptions

Four concessions, named here rather than left for a reviewer to find.

PCI DSS position

The platform is designed for reduced-scope SAQ A: cardholder data is entered on the payment provider’s hosted page and never traverses or is stored on E-Mall infrastructure. PCI DSS v4.0.1 added an eligibility criterion that the merchant confirm its pages are not susceptible to script attacks. Removing every third-party script and enforcing a nonce-based policy is how this application answers that criterion. No card data exists anywhere in this sandbox: payment is simulated and says so at the point of checkout.

Not yet done

Vulnerability reports are welcome during evaluation — please route them through the submission contact. See also the privacy notice.