저는 웹 보안 분야의 전문가이며 이틀 동안 연구하고 있습니다. OWSAP에 따르면 SQL 인젝션과 XSS 공격은 인터넷을 통해 가장 많이 발생하며 최소에서는 모든 프로그래머가 처리해야합니다.PHP 웹 사이트의 보안 전략 : SQL 인젝션, XSS 공격 및 2 차 SQL 인젝션
그래서 내가 그들에게 (만약 내가 잘못 당신이 그것을 수정하거나 추가 요청) 따르고 보호하기 위해 이해 무엇 :
Use PDO and prepared statements to prevent SQL Injection
PDO와 준비가 문을 방지하기에 충분하다 (일차) SQL 인젝션 (Injection)을 지원하므로 드라이버가이를 처리 할 때 입력 데이터를 이스케이프 처리 할 필요가 없습니다.
하지만이는 원시 데이터를 저장하고 방지하기 위해이 날을 만들면서 ' OR '1'='
같은 데이터가 PDO와 준비된 문을 통과 한 후 데이터베이스에 저장받을 수 있습니다 2 차 SQL 주입 (see this for more)하는 경향이 당신을 이끌 수 있습니다 오히려 먼저 문자열을 탈출 느낄 따라서
use $pdo->quote($string) before passing it to prepared statement for storage
그러나 나는 또한 XSS 공격에 대한 보호 기능을 원하기 때문에 내가 (최소 경우 또는 htmlspecialchars()
)뿐만 아니라 htmlentities()
를 사용한다 .I이 출력에서이 작업을 수행해야하지만 에서 사용하는 것을 선호 할 수 있습니다. 내 출력은 HTML의 대상이되는 경우
요약하면, 내 단계는 단순히 데이터베이스에서 저장된 필드를 에코
$string ='raw input from user';
$escaped_string=$pdo->quote(htmlentities($string));
$pdo->execute('query to store $escaped_string into the database');
될 것이다.
내 접근 방식이 안전한지 여부를 알고 싶습니다.
이 질문은 ..? – sunshinekitty
예 내 접근 방식이 안전한지 알고 싶습니다. –
@InsaneCoder 당신의 접근 방식은 혼란 스럽습니다 ... 그리고 내가 흔히 볼 수있는 일반적인 실수는 어디에서나 코드에서 다시 볼 수 있습니다. 몇 가지 정보는 내 대답을 참조하십시오. 질문이 있으시면 구체적으로 질문하십시오. – Brad