如何防止XSS攻擊

AprMay發表於2022-05-23

Wiki的XSS攻擊

XSS攻擊通常指的是透過利用網頁開發時留下的漏洞,透過巧妙的方法注入惡意指令程式碼到網頁,使使用者載入並執行攻擊者惡意製造的網頁程式。這些惡意網頁程式通常是JavaScript,但實際上也可以包括JavaVBScriptActiveXFlash或者甚至是普通的HTML。攻擊成功後,攻擊者可能得到更高的許可權(如執行一些操作)、私密網頁內容、會話cookie等各種內容。

Laravel利用HTML Purifier來預防XSS攻擊

Laravel版本5.8
HTML Purifier版本4.14

  1. 安裝HTML Purifier
    感謝原作者,原地址:github.com/ezyang/htmlpurifier
    composer require ezyang/htmlpurifier
  2. 新建中介軟體
    php artisan make:middleware XSS
  3. 新增中介軟體

如何防止XSS攻擊

4.新增規則,具體的規則請閱讀htmlpurifier的文件
htmlpurifier.org/
XSS中介軟體規則的DEMO

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class XSS
{
    //用於處理XSS
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        //過濾XSS方法,這裡是去除輸入的html標籤
        $userInput = $request->all();
        $config = \HTMLPurifier_Config::createDefault();
        $config->set('HTML.Allowed', '');
        $purifier = new \HTMLPurifier($config);
        foreach ($userInput as &$value) {
            $value = $purifier->purify($value);
        }
        $request->merge($userInput);
        return $next($request);
    }
}

5.路由新增XSS中介軟體

如何防止XSS攻擊

知道的越多,才發現自己不知道的更多—-愛耍流氓的唐僧。

有問題請留言!

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章