PHP:mysql_real_escape_string 是否足以清理用户输入?

标签 php security

mysql_real_escape_string 是否足以在大多数情况下清理用户输入?

::编辑::

我主要考虑防止 SQL 注入(inject),但我最终想知道在应用 mysql_real_escape_string 之后我是否可以信任用户数据,或者我是否应该在将数据传递给应用程序和数据库之前采取额外措施来清理数据.

我知道 HTML 字符的清理在哪些方面很重要,但我认为对于信任用户输入没有必要。

T

最佳答案

mysql_real_escape_string 在所有情况下都不够用,但它绝对是非常好的 friend 。 更好的 解决方案是使用 Prepared Statements

//example from http://php.net/manual/en/pdo.prepared-statements.php

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (?, ?)");
$stmt->bindParam(1, $name);
$stmt->bindParam(2, $value);

// insert one row
$name = 'one';
$value = 1;
$stmt->execute();

另外,不要忘记 HTMLPurifier 可用于丢弃任何无效/可疑字符。

...........

编辑: 根据下面的评论,我需要发布此链接(在抱歉造成困惑之前我应该​​这样做)

mysql_real_escape_string() versus Prepared Statements

引用:

mysql_real_escape_string() prone to the same kind of issues affecting addslashes().

Chris Shiflett(安全专家)

关于PHP:mysql_real_escape_string 是否足以清理用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2353666/

相关文章:

php - 在php中使用策略模式的优点

php - MySQLi count(*) 总是返回 1

php - 如何跨 4 个表使用 Laravel 的 hasManyThrough

asp.net - asp.net mysql 安全性是否还需要其他方库作为提供者

web-services - 此服务的 SSL 证书不可信任

bash - 如何在Docker内部安全运行应用程序

PHP 使用 nexmo 发送短信

php - Mysql添加并将它们添加为新列

python - 在 python 中加密

javascript - 如何在共享服务器上安全地存储用户名和密码?