xss过滤器无法处理ajax请求_thunkPHP 预防XSS攻击
比如在有人惡意在你的輸入框中或文本域中輸入<script>標簽,如果不做處理的話,輸入框中的<script>會保存到我們數據庫中,等到將這個數據拿出來展示的時候,就等于將這個內容放入到了html代碼中,那么這個<script>就會被解析就會被認為是一段js代碼,
做個例子:
我的框架還沒有防范這個xss攻擊,所以會受到影響
我們在看看源代碼中
可以看出來我們寫的script生效了,這個就是xss攻擊
這個XSS攻擊可以做很多的事情:現在只是彈框,用戶看見了就不會繼續操作了,那有可能壞人不僅僅是寫了個彈框,要是寫了一個ajax請求用戶看不見,用戶繼續操作,那么就可能泄露用戶的個人信息了
所以我們要預防這種XSS攻擊
首先要預防XSS攻擊,就應該想起來兩種方法,一種是轉化,一種是過濾,顧名思義轉化就是將用戶輸入的<script>的<>轉化成為html實體字符 轉化成 ('> >,< <') 實體字符,轉化后的實體字符就不會被html解析, 詳細的看下面!!!
過濾,將用戶輸入的內容,中的標簽全部不要,剩下的出入數據庫中,展示的時候,也是沒有標簽的
下面我們詳細的解釋用法
在框架中,用轉化的方式了解決XSS攻擊的話是很簡單的,找到 application 下面的 config文件中,尋找一個配置項
框架默認的是空,在后面添加框架自帶的方法 “htmlspecialchars”,
'default_filter' => 'htmlspecialchars',注意要寫就要寫對,因為寫錯了,不會報任何的錯誤,但任何的參數都接受不到
改完后我們在試一下:
在看看源代碼
過濾的思想防范xss攻擊
在富文本編輯器中,輸入的內容源代碼中,包含html標簽是正常的。不能使用htmlspecialchars進行處理。如果用戶直接在源代碼界面輸入js代碼,也會引起xss攻擊。
通常使用htmlpurifier插件進行過濾。
使用composer執行命令,安裝 ezyang/htmlpurifier 擴展類庫 項目目錄下> composer require ezyang/htmlpurifier
使用composer執行命令安裝的,會自動加載類文件,不需要手動加載
在application/common.php中定義remove_xss函數
if (!function_exists('remove_xss')) {//使用htmlpurifier防范xss攻擊function remove_xss($string){// 生成配置對象$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);} }說明:htmlpurifier插件,會過濾掉script標簽以及標簽包含的js代碼。
設置全局過濾方法為封裝的remove_xss函數:
修改application/config.php
我們在試一下效果
直接就過濾掉了,
以上接受怎么防止XSS攻擊的方法:但建議是兩種方法混合這用,比較好
建議:使用這個
如果遇到,上傳富文本的,單獨使用htmlpurifier插件處理
總結
以上是生活随笔為你收集整理的xss过滤器无法处理ajax请求_thunkPHP 预防XSS攻击的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux中pak命令,如何在Linux
- 下一篇: spring.profiles.acti