2013-02-25 87 views
-6

最近,我們正面臨着與用戶的問題很多輸入的數據用戶PHP編碼標準輸入的數據

  1. 他們使用不同的語言
  2. 輸入特殊字符,如「'

如何處理所有這些,一個問題後,我們正面臨着另一個。

或者,是否有任何編碼標準或高級教程可用?

感謝

+0

進入數據庫之前「造成問題」如何?哪裏?不管語言如何,第一條規則就是永遠不要相信用戶的輸入,並且對[大逃避現實(或:你需要知道如何處理文本中的文本)]中描述的概念有基本的瞭解](http:// kunststube.net/escapism/)。 – deceze 2013-02-25 16:11:12

+0

使用UTF-8或UTF-16應該做的伎倆,不驗證英文文本[az],並確保您的數據庫設置爲保存外來字符 – Waygood 2013-02-25 16:12:19

+1

只有一條黃金法則:*永遠不要信任用戶輸入* – J0HN 2013-02-25 16:12:55

回答

1

在處理用戶提供的輸入時,通常應該嘗試「逃避」所有特殊字符。

如果你發現某些字符造成嚴重破壞你的系統,那麼你可以像這樣刪除:

<?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

1

如果您正在尋找接這些字符出來的數據,你可能要考慮正則表達式。查看文檔here