PHP中的干净和安全的字符串[重复]

Posted

技术标签:

【中文标题】PHP中的干净和安全的字符串[重复]【英文标题】:Clean & Safe string in PHP [duplicate] 【发布时间】:2011-05-25 23:20:40 【问题描述】:

可能的重复:php: the ultimate clean/secure functionWhat's the best method for sanitizing user input with PHP?

我应该在我的函数中添加什么以确保通过它的每个字符串都是“服务器友好的”?我使用这个小函数来检查包含姓名、电子邮件地址和 ID 的输入。

   function checkInput($str) 
        $str = @strip_tags($str);
        $str = @stripslashes($str);
        $str = mysql_real_escape_string($str);
        return $str;
    

【问题讨论】:

同意佩卡。但是总结一下。没有你想要做的事情。 一切都是上下文相关的。不可能让 1 个功能全部完成。例如,您只想对要进入数据库的数据调用mysql_real_escape_string。并且您只想在数据被渲染时调用htmlspecialchars。所以没有灵丹妙药(也不应该有)...... 【参考方案1】:

我应该在我的函数中添加什么以确保通过它的每个字符串都是“服务器友好的”?

这应该可行:

function checkInput($str) 
  return "";

更详细的解释,see here

【讨论】:

不,不是,但我咯咯地笑了:)【参考方案2】:

我会删除一些特殊字符,这些字符与此类字符串无关,可用于代码注入,例如 $ % # |等等。

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

【讨论】:

【参考方案3】:

关于数据库,检查PDO 占位符。它们是跨 DBMS。

【讨论】:

它们还提供了对背后运行的数据库引擎的抽象【参考方案4】:

服务器友好是什么意思?

对于电子邮件地址等验证,请查看data filtering。

为了确保字符串对于数据库使用转义是安全的,例如mysql_real_escape_string

输出数据时使用htmlspecialchars

【讨论】:

以上是关于PHP中的干净和安全的字符串[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从PHP和Javascript中的字符串中删除所有空格[重复]

PHP中的随机字符串[重复]

php如何从php中的字符串中删除最后一个字符[重复]

PHP:删除多维数组中的空数组字符串[重复]

如何从php中的sql查询中获取字符串[重复]

当字符串包含 PHP 中的重复键时,如何将字符串转换为关联数组? [复制]