2013-09-01 88 views
0

對於跨site_scripting漏洞驗證不受信任的HTML輸入是否必須處理每個輸入?

1)它來驗證和逃生的用戶輸入

2)每一個好主意,用strip_tags的不夠好,什麼是htmlpurifier在它的好處?

+1

1.是的。 2.始終使用服務器端驗證('mysqli_real_escape_string()'和其他類似的方法)(js驗證是好的,它可以繞過) –

回答

0

是的,這是一個好主意。我會盡可能地說,如果你不是你是白癡。將數據存儲在數據庫中時使用prepared statements and bound parameters。如果你使用這個(就像你應該那樣),你不需要手動轉義進入數據庫的數據。

現在顯示數據取決於您想要允許的以及要輸出的位置。如果它將顯示在HTML頁面上,並且您不想允許任何HTML呈現,請使用htmlspecialchars($content, ENT_QUOTES)。你幾乎不需要使用htmlentities,因爲它會轉換所有有HTML實體的字符。這意味着它會讓你的文件變得沒有必要變大如果你想允許一些HTML,你必須在顯示它之前過濾它(使用HTML淨化器)。

請注意,不同的存儲機制和不同的輸出介質需要不同的轉義/消毒策略。

+0

+1,在不同的存儲需要不同的轉義策略的情況下?我想如果你使用的是數據庫,則不需要轉義。 –

+1

例如,如果您要發送電子郵件而不是存儲在數據庫中,則必須注意標題注入。 – PeeHaa