加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql – 为公众提供在数据库上运行SELECT查询的方法有多危险?

发布时间:2021-03-18 17:34:58 所属栏目:MySql教程 来源:网络整理
导读:假设我执行以下操作: 我创建了一个MySQL数据库,并用一些数据填充它. 我创建了一个只能访问该数据库且只具有SELECT权限的MySQL用户. 我创建了一个网页,用户(任何用户,无需密码)都可以通过该网页输入任意SQL,在提交表单时,脚本会尝试以我创建的MySQL用户身

假设我执行以下操作:

>我创建了一个MySQL数据库,并用一些数据填充它.
>我创建了一个只能访问该数据库且只具有SELECT权限的MySQL用户.
>我创建了一个网页,用户(任何用户,无需密码)都可以通过该网页输入任意SQL,在提交表单时,脚本会尝试以我创建的MySQL用户身份运行SQL;生成的任何结果集都显示给用户;生成的任何错误消息都会显示给用户.
>假设数据库不包含存储过程等,只包含表和视图,并且我很高兴任何人都可以看到该特定数据库的任何内容.

我们假设设置将由恶意用户进行探测.可能发生的最坏情况是什么?

一些想法:

> MySQL提供各种语句,如SHOW等,即使只有SELECT权限的用户也可以用来收集有关数据库服务器或我的数据库的信息.可以从错误消息中获取其他信息.虽然可能不足以获得不正当的访问权限,但这些信息肯定有助于这样做.
>数据库软件或我的脚本或脚本语言本身可能存在缺陷,这些缺陷可能允许访问者执行他们不应该通过此界面执行的操作.
>这样做可能违反服务协议条款,特别是如果我使用共享主机. 最佳答案 嗯.聪明的用户可能会通过如下语法攻击:

select some_function_that_updates() from some_table;

并且有一个denial of service的攻击可以打击内存,如:

select * from some_massive_table cross join some_other_massive_table;

坦率地说,对于有经验的程序员来说,编写一个表现良好的查询是很困难的……即使他们试图编写一个好的查询,穷人也有什么机会

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读