在PHP中的任何好處是有一個$ _POST值設置爲一個變量而不是隻使用線就已經消毒後的$ _ POST值的任何好處?
0
A
回答
3
前提是有缺陷的地方,你「清理」$_POST
陣列本身。
「禁制」(我不能寫不帶引號)是一個令人不安的概念,因爲它通常歸結爲隨機取出這些害怕字符在一些背景有些特殊的意義。問題在於:a)隨機刪除數據會給用戶提供一些隨機輸入的子集,從不知道現在到底是什麼東西,以及b)每個上下文都有自己的特殊字符,這意味着幾乎不可能平等地對所有情況進行消毒。
您需要逃生或編碼專門爲每個單獨的上下文(HTML編碼爲HTML,SQL逃生的SQL (更好:使用參數化查詢)爲JSON,JSON編碼等)。不要隨意刪除一部分數據,希望它現在對於任何你想要的環境都是「安全的」。
因爲1,一旦重整所有的輸入數據,並丟棄原來的數據意味着你真的完全放棄原來的數據。這可以是很麻煩的後面......
解決方案:
概念,當你產生一個數據塊的改變版本,將其分配到一個新的變量:
$htmlEncodedUsername = htmlspecialchars($_POST['username']); $sqlEscapedUsername = $mysqli->real_escape_string($_POST['username']);
做這個聰明,不分配到上千元新的變量:
$stmt->bindValue(':username', $_POST['username']); ... <p><?php echo htmlspecialchars($_POST['username']); ?></p>
不需要做任何你最初提出的事情。
+0
謝謝大家:) – BoKu
相關問題
- 1. 你可以有一個設置爲數組的PHP $ _POST變量嗎?
- 2. 設置$ _POST變量
- 3. $ _POST在php中沒有值
- 4. 我可以在PHP中爲$ _POST變量賦值嗎?
- 5. 設置$ _POST變量
- 6. 你可以在PHP中設置一個變量爲false?
- 7. 在PHP中設置值爲$ _REQUEST變量
- 8. $ _POST值沒有設置在$ .ajax後
- 9. PHP只讀一個$ _POST值
- 10. 是否有可能把一個PHP變量內$ _POST ['']?
- 11. 未在$ _POST中設置的值
- 12. $ _POST變量在php中爲空
- 13. 設置一個php變量爲html
- 14. 在$ _POST變量中設置值以通過Codeigniter進行驗證
- 15. 將值設置爲一個新變量
- 16. 一次爲多個變量設置值?
- 17. PHP $ _POST變量有時爲空
- 18. JQuery似乎正在設置一個額外的$ _POST值
- 19. 是可以設置一個PHP變量沒有JavaScript或窗體?
- 20. AJAX和PHP我可以設置一個變量onclick?沒有Jquery
- 21. 從一個Javascript變量值設置爲PHP變量的值,而不刷新
- 22. 在liferay中爲servicecontext設置一個值
- 23. 在PHP變量中設置printf()值
- 24. javascript:將變量設置爲第一個可用值
- 25. php $ _POST []沒有獲取值
- 26. 字符串值設置爲可變
- 27. 將PHP變量值帶到另一個頁面,並設置爲另一個PHP變量的值
- 28. 爲Cygwin設置PHP可變路徑
- 29. 設置變量值如果爲空(PHP)
- 30. str_replace $ _POST變量值
技術上,如果它已經消毒它的罰款。但仍被認爲是不好的做法。如果您編寫的代碼直接訪問'$ _POST',該代碼如何確切知道它是否已被清理?更好地清理'$ _POST'變量並將清理過的值存儲在局部變量中,然後使用這些變量。 – jszobody
當您更改$ _POST陣列的鍵時,您只需在代碼中更改一次,而不是每次都發生 –