首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql使用addslashes()

mysql使用addslashes()
EN

Stack Overflow用户
提问于 2011-01-19 02:12:42
回答 3查看 9.2K关注 0票数 7

可能重复:

What does mysql_real_escape_string() do that addslashes() doesn't?

如果您试图阻止sql注入,那么首先要做的就是使用mysql_real_escape_string。是否可以使用addslashes()注入数据库?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-19 02:16:11

加法斜杠是str_replace($str, "'", "\\'")的粗略等价物。您可以通过计算到mysql中的'的任意数量的unicode序列来绕过它,但是看起来与addslashes()完全不同。

另一方面,Mysql_real_escape_String()使用实际的内部mysql转义函数,它确切地知道要查找和修复什么才能使mysql“安全”。mysql的工作方式可能不适用于另一个数据库,因为每个数据库的转义语义和要求略有不同,但是如果您正在使用mysql,那么“真正的转义字符串”才是可行的。

票数 6
EN

Stack Overflow用户

发布于 2011-01-19 02:18:53

当您只在理解unicode编码的语言中添加斜杠(或者在发送查询时混合编码)时,会发生这样的情况:http://bugs.mysql.com/bug.php?id=22243

基本上,知道数据库在编码方面期望什么是更安全的--这样您就不会意外地转义字符的一半,或者让字符的后面部分没有转义。

票数 1
EN

Stack Overflow用户

发布于 2011-01-19 02:18:48

但是,如果将未引用的数据添加到表中,也是可能的,即

代码语言:javascript
复制
SELECT * FROM tbl WHERE id = 10

在这里,您需要确保这个id确实是一个数字。

代码语言:javascript
复制
$id = intval( $_GET[ 'id' ] ) ;
$query = "SELECT * FROM tbl WHERE id = {$id}" ;
$result = mysql_query( $query ) ;
// ... bla-bla
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4731144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档