English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 php 입력 필터링 작업의 예제를 소개합니다. htmlentities와 htmlspecialchars의 사용 방법을 공유하여 참고하십시오.
입력을 필터링하는 것(즉, 목록에 나열된 데이터 소스에서来的任何数据)은, 불안전한 문자를 escape하거나 제거하는 것을 의미합니다. 데이터가 애플리케이션의 저장 층에 도달하기 전에 항상 입력 데이터를 필터링해야 합니다. 이는 첫 번째 방어선입니다. 웹사이트의 댓글 양식이 html을 받아들이는 경우, 기본적으로 방문자는 댓글에 해킹<script> 태그를 추가할 수 있습니다.
<p> 제 테스트 </p> <script>alert(123)</script>
위 예제에서. 이 댓글을 필터링하지 않으면, 해킹 코드가 데이터베이스에 저장되고, 그런 다음 웹사이트의 태그에서 렌더링됩니다.
HTML
htmlentities 또는 htmlspecialchars 함수를 사용하여 html을 필터링하고 특수 문자를 해당 html 엔티티로 변환할 수 있습니다.
htmlentities 함수는 모든 'html 엔티티'를 포함한 특수 문자를 변환합니다. 예를 들어, 통화 기호(유로, 파운드 등), 저작권 기호 등, htmlspecialchars은 특정 특수 문자만 escape합니다. & " ' < >
이2이 함수는 디폴트로 단일 쌍따옴표를 escape하지 않습니다
$str='<a href="test.html" rel="external nofollow" >\'테스트 페이지\'</a><script>alert(213)</script>'; //단일 쌍따옴표는 escape되지 않습니다 echo $str; echo "<hr/>".PHP_EOL; echo htmlentities($str); echo "<hr/>".PHP_EOL; echo htmlspecialchars($str);
필요한 설정을 해야 합니다2개参数 ENT_QUOTES를 참고하세요
echo htmlentities($str,ENT_QUOTES,'UTF-8');-8); //가볍게 escape됨 echo "<hr/>".PHP_EOL; echo htmlspecialchars($str,ENT_QUOTES,'UTF-8);//가볍게 escape됨
위 예제는 htmlentities와 htmlspecialchars을 구분할 수 없습니다. 특별한 문자, 예를 들어 유로 등을 사용하여 특별한 문자를 추가하여, htmlentities는 이를 escape하겠지만, htmlspecialchars은 escape하지 않습니다.
echo htmlentities(' <>"').PHP_EOL; echo "<hr/>".PHP_EOL; echo htmlspecialchars(' <>"').PHP_EOL; //없음
결론:일반 표单 제출 시에는 strip_tags를 사용하여 HTML 태그를 제거할 수 있으며, 텍스트 편집기에서 HTML 태그를 유지하려면 htmlspecialchars을 사용하여 제출 데이터를 필터링할 수 있습니다.
PHP와 관련된 더 많은 내용에 대해 관심이 있는 독자는 이 사이트의 특辑을 확인할 수 있습니다: 《PHP 프로그램 설계 보안 강의》、《PHP 보안 필터링 기술 요약》、《PHP 연산 및 연산자 사용 요약》、《PHP 네트워크 프로그래밍 기술 요약》、《PHP 기본 문법 입문 강의》、《PHP面向对象程序设计入门教程》、《PHP 문자열(string) 사용 요약》、《php+mysql 데이터베이스 작업 입문 강의》 및 《php 일반 데이터베이스 작업 기술 요약》
이 문서에서 설명한 내용이 여러분의 PHP 프로그램 설계에 도움이 되길 바랍니다.
성명서: 이 문서의 내용은 인터넷에서 가져왔으며, 저작권은 원저자에게 있으며, 인터넷 사용자가 자발적으로 기여하고 업로드한 내용입니다. 이 사이트는 소유권을 가지지 않으며, 인공적인 편집을하지 않았으며, 관련 법적 책임을 부담하지 않습니다. 저작권 침해 내용이 있음을 발견하면, 이메일을 notice#w로 보내 주세요.3codebox.com에 이메일을 보내면 (#을 @으로 변경하십시오) 신고하시고 관련 증거를 제공하십시오. 사실이 확인되면, 이 사이트는 즉시 저작권 침해 내용을 삭제합니다.