2013-01-15 31 views
-4

我存儲形式以及形式處理腳本,JavaScript驗證腳本,並在數據庫形式CSS,我使用eval()爲PHP代碼,所以我的問題是這樣做我需要去htmlspecialchars()htmlentities()我是否需要消毒的代碼,如果正在使用eval()

使用mysqli_real_escape_string()nl2br()反正我和雅不提醒我有關如何使用eval()安全或evalevil等等等等,那不是關心這裏的事情是,如果我不使用htmlspecialcharshtmlentities的HTML會因爲它已被張貼在數據庫中,如<將是<而不是&lt;所以我需要使用這些功能,或者在這種情況下它們並不是真正需要的嗎?

+0

如果你不使用其中的一個有很大的XSS漏洞。那麼,實際上已經有一個名爲「eval」的安全漏洞。 – Leri

+0

@PLB只有系統管理員將訪問代碼,所以沒有XSS的問題,看我的問題,我說不要提醒我有關的安全性,用戶輸入不會被執行,只有系統管理員將明顯這樣做 –

+0

你不關心編寫健壯的代碼,那麼爲什麼你不試一試,看看有什麼作用?如果它不起作用,那麼你會得到一個錯誤。繼續嘗試,直到它工作,你會得到你的答案。 –

回答

0

通用答案:在上下文有變化時使用轉義函數。

把一個純文本字符串轉換成SQL時:逃命SQL。

將純文本字符串放入HTML時:Escape for HTML。

把一個純文本字符串轉換爲URL時:逃避URL。

在做以上的超過一兩件事:做正確的順序都逃脫了,真的試圖找出如果你沒有錯過情境改變。

演示問題:

開始

$param = "foo"; 
$url = "http://www.example.org/newpage"; 

<a href="javascript:location='http://www.example.org/newpage?param=foo';return false;">Link</a> 
相關問題