当前位置: 首页 > 面试题库 >

mysql_real_escape_string()是否损坏?

禹昆
2023-03-14
问题内容

有些人认为这样做mysql_real_escape_string()存在一些缺陷,即使正确使用也无法保护您的查询。
带一些化石的物品作为证明。

因此,问题是:mysql [i] _real escape_string()完全不可接受吗?
还是仍然可以使用此功能来创建自己的预备语句?

请提供校对码。


问题答案:

从MySQL的C
API函数mysql_real_escape_string描述

如果需要更改连接的字符集,则应使用mysql_set_character_set()函数而不是执行SET NAMES(或SET CHARACTER SET)语句。mysql_set_character_set()的工作方式类似,SET NAMES但也会影响所使用的字符集mysql_real_escape_string(),而SET NAMES不会。

因此,不要使用SET NAMES/ SET CHARACTER SET而是PHPmysql_set_charset来更改编码,因为它与MySQL的编码相对应mysql_set_character_set(请参见
/ext/mysql/php_mysql.c的 源代码
__)。



 类似资料:
  • 问题内容: 据我所知,使用旧的JMM来实现懒惰单调的DCL(双重检查锁定)技巧被打破了,但是我坚信它已被新的JMM和volatile字段所修复… 但是,在这篇不错的文章中,这显然已经足够新,足以引用DCL中的新旧JMM和volatile字段,表明它仍然坏了… 我在这里到那里读到它是固定的,然后我发现了这一点……有人可以最后说它是否损坏了? 我的理解是,通过波动性地在关系发生之前保证发生的先兆并有效

  • 问题内容: 在PHP手册中,有一条注释: 注意:如果不使用此功能对数据进行转义,则该查询容易受到SQL注入攻击的攻击。 这足以进行反SQL注入吗?如果没有,您能举个例子和一个好的反SQL注入解决方案吗? 问题答案: 通常足以避免SQL注入。不过,这确实取决于它是否没有错误,即它 存在 脆弱性的可能性很小(但是这还没有在现实世界中体现出来)。准备好的语句是在概念上完全排除SQL注入的更好的替代方法。

  • 问题内容: 首先,一个简单的测试代码: 该测试代码使用Java 7仅创建一个文件“ test_0_0.log”,无论我运行该程序的频率如何。这是预期的行为,因为构造函数中的append参数设置为true。 但是,如果我使用Java 8运行此示例,则每次运行都会创建一个新文件(test_0_0.log,test_0_1.log,test_0_2.log等)。我认为这是一个错误。 恕我直言,Java的

  • 问题内容: 在http://www.justinshattuck.com/2007/01/18/mysql-injection-cheat- sheet/?akst_action=share- this上 ,有一节声称您可以使用某些亚洲字符编码绕过mysql_real_escape_string 用BIG5或GBK绕过mysql_real_escape_string() “注入线” に关する追加情

  • 问题内容: 我正在使用Java 7,下面有下面的类。我实现和正确的,但问题是,收益的主要方法,下面又返回两个对象相同的散列码。我可以让更多的眼睛看着这个班级,看看我在这里做错了什么吗? 更新: 我更换了我称之为行方法用我自己的哈希函数:。它返回一个不同的哈希码,这是当两个对象不同时应该执行的操作。是方法打破? 对你的帮助表示感谢! 问题答案: 实际上,您碰巧触发了纯粹的巧合。:) 碰巧是通过相继添

  • 问题内容: 我正在尝试做一个简单的例子… 在IE10中 窗口/标签页之间(相对于iframe) 跨起源 删除这些条件中的任何一个,一切正常:-) 但是据我所知,只有两个窗口共享一个原点时,窗口间才在IE10中起作用。(事实上​​,而且很奇怪,这种行为比这更宽松:共享 宿主的 两个不同来源似乎也起作用)。 (注意:此问题涉及问题,但答案是关于IE8和IE9的,而不是10) 更多详情+示例… 启动器页