2010-10-26 93 views
2

存儲值無疑是它更好地保存確切的用戶輸入數據庫或清潔的XSS和商店.. 還是不錯的存儲直接用戶輸入,清潔並顯示它? 請指導我。關於MySQL數據庫

感謝

回答

4

我會說這是更好地存儲在數據庫中的準確數據,並正確,當你需要顯示它逃脫它。如果您稍後想要使用其他危險字符和轉義可能不同的介質進行顯示,這會使事情變得更加容易。

也有一些其他的問題,依靠定製的「清洗」功能,而不是使用標準庫爲您的語言提供的逃逸功能。

不必要的限制 - 如果,例如,你總是刪除<script>標籤的人將無法說話,指出網站<script>標籤,像我一樣剛纔。這可能對一些網站很好,但不是其他網站。

微妙的錯誤 - 如果您編寫自己的「清理」功能,您可能會錯過一些您沒有考慮過的危險輸入。一個例子是用一個空字符串替換<script>,但忘記了用戶可以輸入<scri<script>pt>,其中置換後,將成爲<script>。使用內置的轉義函數通常可以正常工作,因爲它們(有希望)是由經驗豐富的程序員編寫的,經過良好測試並在安全性非常重要的其他數千個系統中使用。

特殊情況 - 如果你決定要清理例如通過移除所有字符串'<''>'所有輸入存儲它們之前,你可能會發現早晚至少有一個特定的字段不能被清除,因爲那些字符在這個字段中是絕對必要的,所以你必須改寫它。現在您已經創建了一種情況,您必須記住您是否應該對數據應用轉義。這會增加錯誤發生的機率,並且很難在代碼中一目瞭然地查看您是否忘記了逃脫或者是否無需轉義其中一個字段。