2009-12-09 110 views
0

想知道如果TRIM(),用strip_tags()和addslashes的組合()就足以過濾從$ _GET和$ _POST過濾用戶輸入

+0

這取決於你與你的GET做什麼,並POST值。 – voyager 2009-12-09 03:33:55

回答

2

這取決於您希望執行哪種驗證。

下面是一些基本的例子:

  • 如果數據將在MySQL的查詢使用請確保對數據使用mysql_real_escape_query(),而不是addslashes()的。
  • 如果它包含文件路徑,請務必刪除「../」部分並阻止對敏感文件名的訪問。
  • 如果您要在網頁上顯示數據,請確保在其上使用htmlspecialchars()。

但最重要的驗證只接受你期待值,換言之:只允許數字值,當你期待號碼等

1

簡短的回答變量值:無。

長答案:這取決於。

基本上,你不能說如果沒有考慮你想用它做什麼,一定量的過濾是或不夠的。例如,以上將允許通過「javascript:dostuff();」,這可能是好的,或者如果您碰巧在鏈接的href屬性中使用GET或POST值之一,則可能不會。

同樣,您可能有一個豐富的文本區域,用戶可以在其中進行編輯,因此剝離標籤不完全合理。

我想我想說的是,有一套簡單的步驟來消毒數據,以便您可以將其交叉並說「已完成」。你總是必須考慮數據在做什麼。

1

它高度依賴於你將要使用它的地方。

  • 如果您打算以HTML格式顯示內容,請確保您正確指定了編碼(例如:UTF-8)。只要你去掉所有的標籤,你應該應該罰款。
  • 對於在SQL查詢中使用,addslashes是不夠的!例如,如果您使用mysqli庫,則需要查看mysql::real_escape_string。對於其他DB庫,請使用指定的轉義函數!
  • 如果你打算在javascript中使用字符串,addslashes 不會就夠了。
  • 如果您對瀏覽器錯誤偏執,請查看OWASP Reform library
  • 如果您在HTML以外的其他上下文中使用數據,則會應用其他轉義技術。