2013-02-25 82 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