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

可能的重复:
PHP: the ultimate clean/secure function
What'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。所以没有灵丹妙药(也不应该有)......

标签: php string code-injection


【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-26
      • 2012-10-21
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多