2011-05-10 1 views
1

xss 공격으로부터 보호하기 위해 입력 및 출력을 필터링하기 위해 pdo를 사용하여 PHP의 htmentities()를 사용해야합니까?나는 php의 htmentities()를 사용하여 입력 및 출력을 필터링하는 pdo를 사용해야합니까?

+3

필터 출력, 입력되지 않았습니다. – BoltClock

+0

인코딩 할 때보다 더 중요한 것은 두 번째 (ENT_QUOTES)와 세 번째 매개 변수 (charset)입니다. - 모든 HTML 태그 및 인용 된 속성에서 이스케이프 처리 된 문자열을 이스케이프 처리합니다. – mario

답변

4

사용 htmlentities (또는 바람직 htmlspecialchars) 때 하는 HTML 맥락에서 사용자가 제공 한 내용을 출력 (즉, 귀하의 웹 사이트에 그것을 표시 할 때). 데이터베이스에 들어가는 HTML 이스케이프 값은 XSS 취약점이 없기 때문에 보통 데이터를 데이터베이스에 저장하고 필요에 따라 나중에 이스케이프합니다.

0

입력을 데이터베이스에 저장하기 전에 htmlentities 또는 htmlspecialchars를 사용해야합니다. 텍스트는 데이터베이스에 한 번만 저장되지만 (프런트 엔드에 편집 옵션이있을 때까지) 여러 번 표시되므로 텍스트를 저장하면 CPU :

+0

CPU 시간이 유효한 카운터 인수이지만 HTML 컨텍스트 (예 : JSON API) 외부에서 데이터를 사용하는 경우 모든 CPU 시간을 사용하여 모든 것을 이스케이프 처리해야합니다. HTML 이스케이프의 오버 헤드 오버 헤드가 병목 현상이 될 때까지 원시 데이터를 저장하는 것이 좋습니다. HTML 컨텍스트에서 데이터를 사용하는 것만 확실합니다. – deceze

관련 문제