2012-04-10 58 views
1

我有一個基於用戶輸入註冊用戶的腳本。這使用準備好的語句和白名單來防止sql注入。但我很難理解XSS的預防。如果您不輸出html,是否需要htmlspecialchars?

據我瞭解,你只需要防止XSS如果你是輸出到HTML頁面?這是什麼意思???

即時猜測與此註冊頁面並不適用,因爲我不輸出HTML的網頁?是對的嗎?

如果我是爲了防止XSS,做我用用htmlspecialchars?

回答

3

通常是正確的,如果您有任何返回的值顯示在頁面上,或者如果要插入信息到數據庫中供以後檢索和顯示(如用戶配置文件信息),您將要使用htmlspecialchars。

對我來說,當我進行用戶註冊時,如果他們在輸入字段中未能輸入正確的值,我會重新顯示頁面並輸入它們的值。在這種情況下,我用htmlspecialchars編碼。

如果在任何時候,您計劃將數據庫中的信息重新顯示到網頁中(如配置文件等所提及的),則應使用htmlspecialchars。

更好的安全比抱歉,我總是說 - 從未信任用戶輸入

+1

如果您要插入數據以供稍後顯示,那麼稍後在顯示時間時最好使用'htmlspecialchars'。 – Jon 2012-04-10 23:50:52

0

基本上,XSS當你正在服用的用戶輸入未進行消毒並顯示在您的網頁發生。

例如:用戶輸入

<script>alert('hello you are hacked');</script> 

在一個文本框,並在您的網頁上顯示這是註冊像

Hello, $username 

後,這個突然被變成

Hello, <script>alert('hello you are hacked');</script> 

這是一種形式的XSS


之一的effiecient辦法,以防止XSS是這樣

echo htmlspecialchars($varname, ENT_QUOTES, 'UTF-8'); 
0

據我瞭解,你只需要防止XSS如果你是 輸出HTML到頁面上?這是什麼意思???

XSS是由服務器向客戶端輸出HTML(實際上是Javascript)時發生的攻擊,當它不意味着這樣做時(顯然,當HTML是由惡意用戶特製和提供的) 。

我猜這個註冊頁面不適用,因爲我是 不輸出HTML的網頁?是對的嗎?

如果您不是輸出什麼來自用戶輸入您是安全的。

如果我是爲了防止XSS,我使用htmlspecialchars

是的,這就足夠了。