TP5框架 《防sql注入、防xss攻擊》

TP框架中有自帶的防止xss(跨站腳步攻擊)、sql注入,在 application/config.php 中有個配置選項:

框架默認(rèn)沒有設(shè)置任何過濾規(guī)則,你可以是配置文件中設(shè)置全局的過濾規(guī)則:

// 默認(rèn)全局過濾方法 用逗號分隔多個
'default_filter' => 'htmlspecialchars,addslashes,strip_tags',

htmlspecialchars:防XSS攻擊,尖括號等轉(zhuǎn)義過濾

addslashes:防SQL注入,在每個雙引號(")前添加反斜杠

strip_tags:剝?nèi)プ址械?HTML 標(biāo)簽

把這些參數(shù)加上后,每次請求后端的接口中,框架就會對請求的變量進(jìn)行自動過濾了。

也可以在獲取變量的時候添加過濾方法,例如:

Request::instance()->get('name','','htmlspecialchars'); // 獲取get變量 并用htmlspecialchars函數(shù)過濾

Request::instance()->param('username','','strip_tags'); // 獲取param變量 并用strip_tags函數(shù)過濾

Request::instance()->post('name','','org\Filter::safeHtml'); // 獲取post變量 并用org\Filter類的safeHtml方法過濾

可以支持傳入多個過濾規(guī)則,例如:

Request::instance()->param('username','','strip_tags,strtolower'); // 獲取param變量 并依次調(diào)用strip_tags、strtolower函數(shù)過濾

如果當(dāng)前不需要進(jìn)行任何過濾的話,可以使用(V5.0.3+版本) ps: 這個方法測試了下,好像沒有起作用,你們也可以試下

Request::instance()->get('name','',false); // 獲取get變量 并且不進(jìn)行任何過濾 即使設(shè)置了全局過濾

如果有用到富文本編輯器或其他類似的提交html標(biāo)簽的變量,可以使用:

 htmlspecialchars() 函數(shù)把預(yù)定義的字符轉(zhuǎn)換為 HTML 實體。

預(yù)定義的字符是:

& (和號)成為 &
" (雙引號)成為 "
' (單引號)成為 '
< (小于)成為 <
> (大于)成為 >
htmlspecialchars_decode() 函數(shù)把預(yù)定義的 HTML 實體轉(zhuǎn)換為字符。

會被解碼的 HTML 實體是:

& 解碼成 & (和號)
" 解碼成 " (雙引號)
' 解碼成 ' (單引號)
< 解碼成 < (小于)
> 解碼成 > (大于)
htmlspecialchars_decode() 函數(shù)是 htmlspecialchars() 函數(shù)的反函數(shù)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 可以通過Request對象完成全局輸入變量的檢測、獲取和安全過濾,支持包括$_GET、$_POST、$_RE...
    進(jìn)擊的PHPer閱讀 461評論 0 0
  • 對網(wǎng)站發(fā)動XSS攻擊的方式有很多種,僅僅使用php的一些內(nèi)置過濾函數(shù)是對付不了的,即使你將filter_var,m...
    dreamer_lk閱讀 7,790評論 0 6
  • 對網(wǎng)站發(fā)動XSS攻擊的方式有很多種,僅僅使用php的一些內(nèi)置過濾函數(shù)是對付不了的,即使你將filter_var,m...
    薛延祥閱讀 496評論 0 0
  • 在 application/config.php 中有個配置選項框架默認(rèn)沒有設(shè)置任何過濾規(guī)則,你可以是配置文件中設(shè)...
    dongdog閱讀 1,424評論 0 0
  • 控制器 新建控制器的定義 1/聲明命名空間 app\模塊\controller 2/控制器文件名首字母大寫,采用駝...
    機器不能學(xué)習(xí)閱讀 1,682評論 0 4

友情鏈接更多精彩內(nèi)容