在開發留言系統時除了前端防禦外,後端的過濾也很重要,因為前端所有的JS功能都可透過瀏覽器的F12竄改導致防禦無效,尤其是惡意發佈js,css,程式碼破壞版面,甚至可將頁面導向木馬程式網頁,所以一定要在資料寫入時就吧js,smarty,css,php標籤通通去除掉無害化處理,才能防止網站遭惡意破壞事情發生。
分享一個PHP去除js,smarty,css,php標籤的function,code如下
//去除js,smarty,css,php標籤
function removejscssscript($str) {//移除js
$str = str_replace("\r\n", PHP_EOL, htmlspecialchars_decode($str));
$str = preg_replace('/<.*script.*>/', '', $str);
//移除css
$str = preg_replace('/<.*style.*>/', '', $str);
$str = preg_replace('/<.*link.*>/', '', $str);
//移除smarty
$str = preg_replace('/<\{+/i', '', $str);
$str = preg_replace('/\}>+/i', '', $str);
//移除php
$str = preg_replace('/<\?php+/i', '', $str);
$str = preg_replace('/\?>+/i', '', $str);
return $str;
}
//在接收變數寫進資料表的地方使用即可
removejscssscript($str=$_POST['description']) ;
實際測試移除效果,我們先在文字框中貼上js,css程式碼
然後送出,可以看到style及script都被移除掉,只剩下結構,這樣就無害化完成
有需要的朋友參考看看
工作心得撰寫:徐嘉裕 Neil hsu
留言
張貼留言