>PHP 프레임워크 >ThinkPHP >XSS 공격을 방지하는 ThinkPHP의 방법

XSS 공격을 방지하는 ThinkPHP의 방법

angryTom
angryTom앞으로
2020-03-10 12:45:366208검색

XSS 공격을 예방하기 위한 TP 설정 방법을 소개하는 글입니다. ThinkPHP를 배우고 있는 친구들에게 도움이 되었으면 좋겠습니다!

XSS 공격을 방지하는 ThinkPHP의 방법

XSS 공격을 방지하는 ThinkPHP의 방법

1 프로젝트에 서식 있는 텍스트 편집기가 없으면 전역 필터링 방법을 사용하여 애플리케이션 아래의 구성 구성 파일에 htmlspecialchars를 추가할 수 있습니다

// 默认全局过滤方法 用逗号分隔多个
'default_filter' => 'htmlspecialchars',

XSS 공격을 방지하는 ThinkPHP의 방법

리치 텍스트 편집기가 있는 경우 이러한 종류의 XSS 방지 공격을 사용하는 것은 적합하지 않습니다

(권장 튜토리얼: thinkphp 튜토리얼)

그런 다음 작곡가를 사용하여 플러그인을 설치하여

명령

composer require ezyang/htmlpurifier

XSS 공격을 방지하는 ThinkPHP의 방법

설치 성공 후 애플리케이션 아래 common.php에서 공용 함수가 있는 위치에 다음 코드를 추가합니다.

XSS 공격을 방지하는 ThinkPHP의 방법

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 공격을 방지하는 ThinkPHP의 방법

프레임워크와 결합 위 코드를 직접 사용할 수도 있고

특정 필드에 대해 xss 검증을 수행할 수도 있습니다

1 명령 파일을 수정하여 다음과 같이 변경합니다. 'default_filter' => 'htmlspecialchars',

2 그런 다음 변경하려는 필드를

XSS 공격을 방지하는 ThinkPHP의 방법

으로 수정합니다. 관련 권장 사항:

PHP 비디오 튜토리얼, 학습 주소: https://www.php.cn /course/list/29/type/ 2.html

위 내용은 XSS 공격을 방지하는 ThinkPHP의 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 zhihu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제