mysql – SQL-Injection:是否可以修改select的子查询?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql – SQL-Injection:是否可以修改select的子查询?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1268字,纯文字阅读大概需要2分钟。
内容图文
![mysql – SQL-Injection:是否可以修改select的子查询?](/upload/InfoBanner/zyjiaocheng/905/18bdf614226c48f1bd14c8f03d512284.jpg)
是否可以在SELECT-Query中修改数据库的子查询?相关数据库是一个mysql数据库.
更多细节:
相关查询如下所示:
SELECT * FROM table WHERE id = $x
变量$x可以替换为任何东西.唯一的限制是,查询是通过php的mysql_query()执行的,这会阻止执行多个后续查询.在这种情况下,只需设置即可轻松修改数据库
$x = "42; DROP TABLE foo;"
解决方法:
编辑:
mysql_query()仅阻止早于5.0的MySql版本中的多个查询. MySql 5.0 or later will allow multiple commands separated by ; when using mysql_query().
所以,是的,a SQL Injection attack能够执行用于连接到数据库的登录所具有的权限.
如果使用管理员权限进行连接,则攻击可以对数据库进行基本上任何可能的修改.
例如,假设您将$email值连接到下面的SQL字符串:
"SELECT email, passwd, login_id, full_name
FROM members
WHERE email = '" + $email + "'"
但是,我们可以说$email值包含字符串:
x';INSERT INTO members ('email','passwd','login_id','full_name')
VALUES ('steve@unixwiz.net','hello','steve','Steve Friedl');--
您最终得到以下声明:
SELECT email, passwd, login_id, full_name
FROM members
WHERE email = 'x';
INSERT INTO members ('email','passwd','login_id','full_name')
VALUES ('steve@unixwiz.net','hello','steve','Steve Friedl');--';
即使您用于连接数据库的登录不允许进行修改,也可以使用SQL注入攻击来清除数据库中的每一点数据……
绝对建议您通过在客户端应用程序中使用某种形式的参数化查询来保护自己.
内容总结
以上是互联网集市为您收集整理的mysql – SQL-Injection:是否可以修改select的子查询?全部内容,希望文章能够帮你解决mysql – SQL-Injection:是否可以修改select的子查询?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。