xss방어2 728x90 PHP 입력값 검증과 SQL 인젝션 방어 — 준비된 문장, 필터, 그리고 출력 이스케이프 SQL 인젝션은 20년 넘게 알려진 취약점이지만 지금도 점검에서 가장 자주 나옵니다. 이유는 간단합니다 — 문자열을 이어 붙여 쿼리를 만드는 코드가 '잘 돌아가기' 때문입니다. PHP 에서 입력값을 다루는 기본 원칙을 받기 → 검증 → 쓰기 → 내보내기 네 단계로 정리합니다.1. 준비된 문장(Prepared Statement) — 예외 없이$pdo = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false,]);$stmt = $pdo->prepare('SELECT id, title FROM posts WHERE user_id = :uid AND stat.. 2026. 7. 23. 콘텐츠 보안 정책(CSP) 처음 적용하는 법 — 보고 모드에서 시작해 단계별로 조이기 CSP(Content-Security-Policy)는 "이 페이지는 어떤 출처의 스크립트·스타일·이미지만 실행·표시한다"를 브라우저에 알려 주는 응답 헤더입니다. 제대로 걸리면 XSS 로 주입된 스크립트가 실행 자체가 막히므로 가장 강력한 방어선이 됩니다. 문제는 처음부터 강하게 걸면 사이트가 바로 깨진다는 것. 그래서 보고 모드로 시작해 단계별로 조이는 순서가 정석입니다.1단계 — 보고 모드로 현황 보기Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-reportReport-Only 는 아무것도 막지 않고 위반만 보고합니다. 브라우저 콘솔에도 뜨고, /csp-report 로 JSON 이 POST 됩니다. 이 보고를 일주일쯤.. 2026. 6. 10. 이전 1 다음 728x90 728x90