标签: mysql-real-escape-string

替代mysql_real_escape_string而不连接到DB

我希望有一个函数表现为mysql_real_escape_string而不连接数据库,因为有时我需要在没有数据库连接的情况下进行干测试.不推荐使用mysql_escape_string,因此不合需要.我的一些发现:

http://www.gamedev.net/community/forums/topic.asp?topic_id=448909

http://w3schools.invisionzone.com/index.php?showtopic=20064

php mysql mysql-real-escape-string

86
推荐指数
4
解决办法
11万
查看次数

mysql_escape_string VS mysql_real_escape_string

所以这是我们都应该知道的事情,并且在我第一次看到它时就在我的脑海中浮现.

我知道这mysql_escape_string是从5.3推荐的,但实际的差异是什么mysql_real_escape_string.

我认为这mysql_real_escape_string是完全相同的mysql_escape_string除了mysql_real_escape_string为mysql资源采取第二个参数.

所以我认为,如何处理字符串必须有一些区别,因为不需要2个函数.

所以我认为差异完全取决于语言环境和字符编码.?

任何人都可以为我清除这个吗?

php escaping mysql-real-escape-string mysql-escape-string

55
推荐指数
1
解决办法
6万
查看次数

为什么PDO比mysql_real_escape_string更好地逃避MySQL查询/查询字符串?

我被告知我会更好地使用PDOMySQL转义,而不是mysql_real_escape_string.

也许我有一个脑死亡的日子(或者可能是因为我没有想象力是一个天生的程序员,而且我仍然处于PHP的新手阶段),但是检查了PHP手册并阅读了关于PDO的条目,我仍然不清楚PDO究竟是什么以及为什么它比使用更好mysql_real_escape_string.这可能是因为我还没有真正掌握OOP的复杂性(我假设它与OOP有关),但除了变量和数组值似乎在其前面有冒号之外,我仍然不确定它到底是什么以及你如何使用它(以及为什么它比它好mysql_real_escape_string.(它也可能与我没有真正理解'类'是什么的事实有关,所以,当我读到"PDO课程"时,我真的不是更聪明的.

在MySQL网站的"开发者专区"中读过两篇文章后,我仍然不清楚.由于我现在甚至无法弄清楚它到底是什么,我认为现在可能使用它有点超出我的范围,但我仍然有兴趣扩大我的教育并找出如何改进的方法.

任何人都可以用"简单的英语"向我解释PDO是什么(或指向我用简单英语写的主题的方向),以及你如何使用它?

php pdo escaping mysql-real-escape-string

48
推荐指数
4
解决办法
4万
查看次数

PHP mysql_real_escape_string() - > stripslashes()留下多个斜杠

我有问题使用PHP/MySQL转义/剥离字符串 - 似乎总是有多余的斜杠.


我们以下面的字符串为例:

<span style="text-decoration:underline;">underline</span>
Run Code Online (Sandbox Code Playgroud)


在向数据库添加字符串时,我将其转义mysql_real_escape_string()并将以下内容存储在数据库中(编辑:通过使用mysql app直接查询数据库来检查):

<span style=\\\"text-decoration:underline;\\\">underline</span>
Run Code Online (Sandbox Code Playgroud)


从数据库中读回来时,我正在传递字符串,stripslashes()并返回以下内容:

<span style=\"text-decoration:underline;\">underline</span>
Run Code Online (Sandbox Code Playgroud)


由于引号仍然被转义,它会破坏html并且文本没有加下划线.


  1. 为什么要mysql_real_escape_string()添加三个斜杠,并stripslashes()删除两个斜杠?我希望他们都添加/删除一个斜杠.
  2. 我怎样才能防止这种情况发生?
  3. 我接近这个正确的方法吗?

php mysql-real-escape-string stripslashes

18
推荐指数
1
解决办法
6万
查看次数

如果绑定参数,是否必须使用mysql_real_escape_string?

我有以下代码:

function dbPublish($status)
{
 global $dbcon, $dbtable;

 if(isset($_GET['itemId']))
 {
  $sqlQuery = 'UPDATE ' . $dbtable . ' SET active = ? WHERE id = ?';
  $stmt = $dbcon->prepare($sqlQuery);
  $stmt->bind_param('ii', $status, $_GET['itemId']);
  $stmt->execute();
  $stmt->close();
 }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下我需要mysql_real_escape_string还是我还好吗?

php mysql sql sql-injection mysql-real-escape-string

17
推荐指数
1
解决办法
5001
查看次数

mysql_real_escape_string()在MySQL中留下斜杠

我刚搬到一家新的托管公司,现在每当一个字符串被转义时使用:

mysql_real_escape_string($str);
Run Code Online (Sandbox Code Playgroud)

斜杠仍保留在数据库中.这是我第一次看到这种情况发生,因此我的脚本都没有使用

stripslashes()
Run Code Online (Sandbox Code Playgroud)

了.

这是在一个运行php 5.2.6的CentOS 4.5 64bit作为lighttpd 1.4服务器上的fastcgi.我确保所有magic_quotes选项都关闭,mysql客户端api是5.0.51a.

我在所有6个网络服务器上都遇到了同样的问题.

任何帮助,将不胜感激.

谢谢.

编辑:

Magic Quotes不亮.请不要建议将其关闭.这不是问题.

php mysql mysql-real-escape-string

12
推荐指数
2
解决办法
3万
查看次数

mysql_real_escape_string的缺点?

我在这里看到一些人说使用连接查询mysql_real_escape_string不会保护你(完全)免受SQL注入攻击.

但是,我还没有看到一个输入示例,它说明了一种mysql_real_escape_string无法保护你的攻击.大多数示例忘记了mysql_query仅限于一个查询并且使用mysql_real_escape_string不正确.

我能想到的唯一例子如下:

mysql_query('DELETE FROM users WHERE user_id = '.mysql_real_escape_string($input));
Run Code Online (Sandbox Code Playgroud)

这不会保护您免受以下输入:

5 OR 1=1
Run Code Online (Sandbox Code Playgroud)

我认为这是错误的使用mysql_real_escape_string而不是缺点,它是为字符串而不是数值设计的.您应该转换为数字类型,或者如果要在清理时将输入视为字符串,则应在查询中执行相同操作并在其周围加上引号.

任何人都可以提供一个可以绕过的输入示例mysql_real_escape_string,它不依赖于对数值的错误处理或忘记mysql_query只能执行一个查询吗?

编辑:我对它的局限性感兴趣,mysql_real_escape_string而不是将它与替代品进行比较,我意识到新项目有更好的选择,我并不反对.

php mysql sql-injection mysql-real-escape-string

12
推荐指数
1
解决办法
2128
查看次数

解码mysql_real_escape_string()以输出HTML

我试图保护自己免受sql注入并使用:

mysql_real_escape_string($string);
Run Code Online (Sandbox Code Playgroud)

发布HTML时,它看起来像这样:

<span class="\&quot;className\&quot;">
<p class="\&quot;pClass\&quot;" id="\&quot;pId\&quot;"></p>
</span>
Run Code Online (Sandbox Code Playgroud)

我不确定real_escape_string添加了多少其他变体,所以不想只替换一些并错过其他...我如何将其"解码"回到格式正确的HTML中,例如:

html_entity_decode(stripslashes($string));
Run Code Online (Sandbox Code Playgroud)

php sql-injection html-encode mysql-real-escape-string

11
推荐指数
3
解决办法
4万
查看次数

我应该使用mysqli_real_escape string()或mysql_real_escape_string()来表单数据吗?

可能重复:
mysql_escape_string VS mysql_real_escape_string

我需要在我的mysql数据库中输入company_name(由用户通过表单给出).我用的时候

$company = mysqli_real_escape_string($_POST['company_name'])
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in     /opt/lampp/htdocs/Abacus-Version-2/admin/Company/insert_company.php on line 58
Run Code Online (Sandbox Code Playgroud)

但是使用时一切似乎都很好

$company = mysql_real_escape_string($_POST['company_name'])
Run Code Online (Sandbox Code Playgroud)

在这种情况下我该怎么办?

php mysql mysqli mysql-real-escape-string

11
推荐指数
3
解决办法
7万
查看次数

mysql_real_escape_string是否容易受到无效的UTF-8攻击,例如过长的UTF-8或生成错误的UTF-8序列?

假设我的数据库设置如下,使用utf-8(mysql中的完整4mb版本)

mysql_query("SET CHARACTER SET utf8mb4");
mysql_query("SET NAMES utf8mb4");
Run Code Online (Sandbox Code Playgroud)

在将字符串放入sql之前,我使用mysql_real_escape_string来逃避不需要的字符(注意 - 我不是在寻找切换到PDO的建议,我想确定mysql_real_escape_string是否可以安全地防止超长的utf8等).

$input = mysql_real_escape_string($_POST['field']);
$sql = "SELECT * FROM `table` WHERE `header`='$input'";
Run Code Online (Sandbox Code Playgroud)

在执行我的mysql_real_escape_string之前,是否需要对$ _POST ['field']进行验证(例如检查字符串是否有效且不会过长并且不包含无效序列等)?

php utf-8 mysql-real-escape-string

11
推荐指数
1
解决办法
4550
查看次数