作爲網站管理員,我需要識別有風險的腳本。
我總是編寫過濾用戶輸入的php代碼。我永遠不要相信用戶輸入,選擇哪些字符是有效的(vs不考慮某些字符),使用php本機過濾功能(filter_input
)或使用lib/frameworks實用程序。
今天,我在下載的模塊查找安全漏洞,並發現此代碼:
if (isset($_GET['css_file_name'])) {
$cssFileName = _PS_MODULE_DIR_ . DS . "xxxx" . DS . "css" . DS . $_GET['css_file_name'] . ".css";
echo file_get_contents($cssFileName);
}
echo "";
我認爲這是不安全的,它不尊重基本規則永遠不要相信用戶的輸入。 所以我決定證明這一點,我試圖添加刪除ASCII字符來刪除.css
,並能夠找到任何文件(例如憑證的PHP文件),但我沒有成功。
所以我的問題是:這段代碼真的很不安全嗎?是否有可能抓住它的PHP文件(你能證明嗎?)
如果我們不能拿出一個漏洞是安全的嗎?你的問題很有趣,但安全更多是一種思考方式,而你自己也懷疑這是否安全。這是一個明顯的跡象,在這種情況下,白名單將是適當的,因爲很難證明它是安全的。 – martinstoeckli