2010-12-15 68 views
3

可能重复:
PHP: the ultimate clean/secure function
What's the best method for sanitizing user input with PHP?清洁和在PHP安全字符串

我应该添加到我的功能,以确保每一个通过这将是字符串“服务器-友善'?我使用这个小函数来检查包含名称,电子邮件地址和ID的输入。

function checkInput($str) { 
     $str = @strip_tags($str); 
     $str = @stripslashes($str); 
     $str = mysql_real_escape_string($str); 
     return $str; 
    } 
+0

同意佩卡。但总结一下。没有你想要做的事情。 – DampeS8N 2010-12-15 15:01:18

+0

一切都是上下文敏感的。不可能有1个功能。例如,你只想对进入数据库的数据调用一个'mysql_real_escape_string'。你只想在数据被渲染时调用'htmlspecialchars'。所以没有魔力(不应该存在)... – ircmaxell 2010-12-15 15:04:13

回答

3

服务器友好是什么意思?

有关验证,例如电子邮件地址,请查看data filtering

要确保一个字符串是数据库的使用转义如mysql_real_escape_string

输出数据时使用htmlspecialchars

0

有关数据库,检查PDO占位符安全。他们是跨DBMS的。

+0

,它们还提供了一个运行在 – 2012-03-30 15:47:17

5

我会删除一些特殊字符,它们在这样的字符串中无所作为,可以用于代码注入,例如$%#<> |等等。

$invalid_characters = array("$", "%", "#", "<", ">", "|"); 
$str = str_replace($invalid_characters, "", $str); 
1

我应该添加到我的功能,以确保每一个通过这将是“服务器友好”的字符串?

这应该工作:

function checkInput($str) { 
    return ""; 
} 

对于更详细的解释,see here

+0

后面的数据库引擎的抽象,这没有什么帮助。 – MattWithoos 2015-06-02 04:00:44

+4

不,它不是,但我傻笑:) – adrianTNT 2016-03-04 11:48:21