最近,我們正面臨着與用戶的問題很多輸入的數據用戶PHP編碼標準輸入的數據
像
- 他們使用不同的語言
- 輸入特殊字符,如「'
如何處理所有這些,一個問題後,我們正面臨着另一個。
或者,是否有任何編碼標準或高級教程可用?
感謝
最近,我們正面臨着與用戶的問題很多輸入的數據用戶PHP編碼標準輸入的數據
像
如何處理所有這些,一個問題後,我們正面臨着另一個。
或者,是否有任何編碼標準或高級教程可用?
感謝
在處理用戶提供的輸入時,通常應該嘗試「逃避」所有特殊字符。
如果你發現某些字符造成嚴重破壞你的系統,那麼你可以像這樣刪除:
<?php
$BadChars = array(
"'", // Single quote - can harm SQL queries
"%", // Percent sign - can harm SQL queries
"<", // Less Than - can be used for XSS
">", // Greater Then - can be used for XSS
";", // Semicolon - can harm SQL queries
"£"
);
// $Input = $_GET['Name'];
$Input = "HELLO'%<;TEST";
foreach ($BadChars as $Char)
{
$Input = str_replace($Char, "", $Input);
}
print "Filtered Input: $Input";
?>
您也可以逃避數據也使用這種現有的功能http://php.net/manual/en/function.mysql-real-escape-string.php
如果您正在尋找接這些字符出來的數據,你可能要考慮正則表達式。查看文檔here。
進入數據庫之前「造成問題」如何?哪裏?不管語言如何,第一條規則就是永遠不要相信用戶的輸入,並且對[大逃避現實(或:你需要知道如何處理文本中的文本)]中描述的概念有基本的瞭解](http:// kunststube.net/escapism/)。 – deceze 2013-02-25 16:11:12
使用UTF-8或UTF-16應該做的伎倆,不驗證英文文本[az],並確保您的數據庫設置爲保存外來字符 – Waygood 2013-02-25 16:12:19
只有一條黃金法則:*永遠不要信任用戶輸入* – J0HN 2013-02-25 16:12:55