XSS 공격을 예방하기 위한 TP 설정 방법을 소개하는 글입니다. ThinkPHP를 배우고 있는 친구들에게 도움이 되었으면 좋겠습니다!
XSS 공격을 방지하는 ThinkPHP의 방법
1 프로젝트에 서식 있는 텍스트 편집기가 없으면 전역 필터링 방법을 사용하여 애플리케이션 아래의 구성 구성 파일에 htmlspecialchars를 추가할 수 있습니다
// 默认全局过滤方法 用逗号分隔多个 'default_filter' => 'htmlspecialchars',
리치 텍스트 편집기가 있는 경우 이러한 종류의 XSS 방지 공격을 사용하는 것은 적합하지 않습니다
(권장 튜토리얼: thinkphp 튜토리얼)
그런 다음 작곡가를 사용하여 플러그인을 설치하여
명령
composer require ezyang/htmlpurifier
설치 성공 후 애플리케이션 아래 common.php에서 공용 함수가 있는 위치에 다음 코드를 추가합니다.
if (!function_exists('remove_xss')) { //使用htmlpurifier防范xss攻击 function remove_xss($string){ //composer安装的,不需要此步骤。相对index.php入口文件,引入HTMLPurifier.auto.php核心文件 // require_once './plugins/htmlpurifier/HTMLPurifier.auto.php'; // 生成配置对象 $cfg = HTMLPurifier_Config::createDefault(); // 以下就是配置: $cfg -> set('Core.Encoding', 'UTF-8'); // 设置允许使用的HTML标签 $cfg -> set('HTML.Allowed','div,b,strong,i,em,a[href|title],ul,ol,li,br,p[style],span[style],img[width|height|alt|src]'); // 设置允许出现的CSS样式属性 $cfg -> set('CSS.AllowedProperties', 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align'); // 设置a标签上是否允许使用target="_blank" $cfg -> set('HTML.TargetBlank', TRUE); // 使用配置生成过滤用的对象 $obj = new HTMLPurifier($cfg); // 过滤字符串 return $obj -> purify($string); }
그런 다음 애플리케이션 디렉터리의 config.php 구성 파일에
이 필터링 메소드를 해당 메소드 이름으로 변경
프레임워크와 결합 위 코드를 직접 사용할 수도 있고
특정 필드에 대해 xss 검증을 수행할 수도 있습니다
1 명령 파일을 수정하여 다음과 같이 변경합니다. 'default_filter' => 'htmlspecialchars',
2 그런 다음 변경하려는 필드를
으로 수정합니다. 관련 권장 사항:
PHP 비디오 튜토리얼, 학습 주소: https://www.php.cn /course/list/29/type/ 2.html
위 내용은 XSS 공격을 방지하는 ThinkPHP의 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!