我在製作CMS,可以由第三方開發人員進行擴展。在過去,我對新手開發者一直忽略安全問題存在問題。當他們將模塊放在我的網站上時,它們可能會損害用戶的網站。PHP - 清理所有數據?
我想創建一個全局對象。這將覆蓋所有全局消息的副本。這可能會導致問題,所以這個對象也將提供一個選項來獲取unsanitized數據。
這樣,默認情況下,開發者在理論上可以做這樣的事情,它的效果不會像通常那樣糟糕。 (顯然,這仍然可能導致問題但是表不會被丟棄,數據不會被暴露出來。)
mysql_query("INSERT INTO users (`name`) VALUES ('{$_POST['name']}')");
這並不能防止開發商故意誰試圖打破東西。但是,這將有助於消除基本的錯誤。
將按如下方式訪問結束對象。
$_POST['key']; // Provides Sanitized version of the post key.
$obj->post('key'); // Provides Sanitized version of the post key.
$obj->post_raw('key'); // Provide unsanitized version of the post key.
人們怎麼看待這種方法?是否有一個可以實現這一目標的「逃避所有」功能?
魔法行情是*不是一個全面的解決方案!實際上,它們意味着虛假的安全。 – Gumbo 2010-10-29 17:05:30
確實如此。魔術引號可能是PHP中最大的失敗,這是很多的說法。 – chaos 2010-10-29 17:07:23