2016-09-22 57 views
0

編輯:我的問題不是如何防止XSS,因爲我已經知道如何,但它是如果用戶可以繞過雙引號刪除。謝謝雖然:)這是XSS-ed嗎?

這是容易被XSS:

<img src="" alt="<?php echo str_replace('"', '', $_POST['imageDescription']);?>" title="Image"> 

e.g如果用戶鍵入"><script>alert('hacked');</script>這是行不通的,因爲雙引號被剝離出來,但這個還是可以XSSed? 我總是驗證數據,但我只是想知道。

+0

可能重複的[如何防止與HTML/PHP的XSS?](http://stackoverflow.com/questions/1996122/how-to-prevent-xss-with-html-php) – Martin

+0

@Martin請閱讀我的編輯 –

+0

您的問題是要求在某種情況下如何防止XSS。如果你已經知道如何防止XSS,那麼你爲什麼不在這個問題上使用這種方法?如果POSTED數據是特定的模糊字符集,並且POST數據以特定方式格式化,則雙引號字符串replace可能* *可能被忽略,但通過遵循在其他被引用的原始問題上給出的建議,這些嘗試是無效的。 – Martin

回答

-1

security.stackexchange的帖子解釋了這一點。顯然,如果您替換雙引號,則無法在alt圖像中使用XSS。

但是,當您處理潛在的安全問題時,最好不要重新發明輪子。使用成熟的方法。

使用htmlspecialchars()當您將PHP數據回顯爲HTML時,任何HTML符號都會轉換爲非危險字符。

有關如何避免XSS攻擊的更多信息,請參閱look here

+1

如何在使用雙引號分隔的alt屬性中使用單引號注入XSS攻擊**? (儘管使用'htmlspecialchars'仍然是最佳實踐)。 – Quentin

+1

我錯了。我自己測試了它,它不能工作。我的意思是,由於'str_replace',你不能注入。 – GiamPy

+0

「也許不是使用您在示例中使用的方法,而是以其他方式使用。」 - 還有其他什麼方式?如果你不能命名一個,那麼你只是猜測。 – Quentin

0

是的,它仍然容易受到XSS的影響。有許多技術可以阻止這一點,並授予我不知道的很多。我相當確定的一件事是可以被濫用來規避這種情況,就是發送無效的UTF-8。其中,當通過代碼(或通過其他方式)運行時,然後轉換爲有效的「角色」,從而不僅規避您的努力,而且還依靠它們來完成XSS攻擊
承認需要更多工作,但那些做這些事情的人並不介意額外的工作

你在這裏所做的被稱爲「黑名單」,這意味着你已經刪除/不允許你認爲有害的東西。方法是,你必須知道所有的這是有害的,無論現在和未來,這是有效的。當然,沒有人可以做到這一點。
這種叫做白名單的兄弟姐妹方法,其中你只允許你知道你想要的輸入僧侶的房間越窄越好,在某些情況下完全消失(如果列表足夠小)。

但是,這些都不能100%地避免XSS攻擊。唯一可以做到這一點的是輸出轉義。在HTML的情況下,執行此操作的功能是htmlspecialchars()I recommend reading the manual for it,並特別注意它的注意事項。

+2

「是的,它仍然容易受到XSS的影響。」 - 如何? – Quentin

+0

@Quentin我已更新我的帖子來解釋至少一個可能的攻擊媒介。 – ChristianF