首页 新闻 会员 周边 捐助

php我想开放sql语句给用户自己查找数据,怎么保证安全?

0
悬赏园豆:50 [已解决问题] 解决于 2016-04-21 09:12

数据库是客户自己的,可能在别处购买的

 

但是数据处理程序在我服务器上,我的程序处理好数据会远程存到客户的数据库

 

这个对我的服务器危害有多大?

 

场景是这样的:

客户登陆我的管理后台,在一个页面上填写资料表单信息,我不对表单内容进行任何过滤

然后我按照客户填写的数据库信息,把表单信息处理好后 链接客户数据库进行保存

当然,我这里还提供了,客户自己填写sql语句,链接自己的数据库查找自己的数据

 

 问题:

假如客户有恶意,这些存取操作 会对我的程序和服务器造成什么问题?

有什么方法可以增加对我服务器安全的吗?

女子100的主页 女子100 | 初学一级 | 园豆:85
提问于:2016-04-15 19:08
< >
分享
最佳答案
0

 

 

这个危害要从两方面来分析:

1、sql注入,这个时候攻击的目标是数据库服务器,而不是你的服务器,防止sql注入的最佳办法不是过滤,而是用参数化命令的方式代替拼接sql语句,这样就能从根本上避免恶意用户通过填写巧妙的表单字段实现sql注入。但另外一个问题是楼主允许用户自己编写sql语句进行查询,这个很要命,你怎么知道他是查询呢?如果是删除修改呢?你自己做语法检测,你能确保你的检测逻辑没有漏洞?这样的做法总是比较危险的,实在要这么做的话,那你就得配置好数据库连接帐号的权限,限定它只有查询权限,而且要限定只能查那些表或者视图。

 

2、脚本注入,这个有可能危害到楼主所谓的自己的服务器。正如楼主所言,写进数据库的内容楼主不做检测过滤,那么如果写进数据库的是一段js脚本呢?下次另外一个用户又查询出这段脚本并在网页上显示,那么这段脚本就可能被浏览器执行,这样就有可能窃取网站的控制权限,甚至黑掉整个网站,具体你可以搜索脚本注入方面的资料。基于这个原因,如果你实在不想检测用户输入的内容,那么你至少应该要保证用户输入的内容再次被取出并在页面上呈现的时候,绝无可能被当作脚本执行,比如在显示之前一定要进行html转义。

 

以上两点抛砖引玉,希望能对楼主有所帮助!

 

 

 

收获园豆:40
脚本王子 | 小虾三级 |园豆:779 | 2016-04-16 14:11

谢谢,估计我现在最怕的也就是脚本注入吧,不知道人家是怎么预防脚本注入

女子100 | 园豆:85 (初学一级) | 2016-04-21 09:11

可以加我的扣2504942383探讨一下

脚本王子 | 园豆:779 (小虾三级) | 2016-04-26 08:03
其他回答(4)
0

没有影响,因为sql不是在你的库执行的,只是,查询是查询,过滤下关键字,不能更新和删除

收获园豆:3
上帝之城 | 园豆:2549 (老鸟四级) | 2016-04-15 19:41

用户提交的表单,一些字符,处理的时候会用到一些正则之类的处理才存到用户数据库中,

这个从提交数据到执行存储之间的时间里,这些数据不会有什么变异吧?

如果存储不会有问题,

那查询结果可能会有点担心是不是?查询到的结果可能会是一些可执行的服务端脚本或者客户端脚本

如果是客户端脚本也就算了,要是服务端脚本可能会对我不利,但我不太清楚也没查过这方面的

将数据库内容展示的时候会对服务器有什么影响吗?

为什么你要求不能更新和删除呢?这两个功能我是要有的,但可能不提供给客户执行

支持(1) 反对(0) 女子100 | 园豆:85 (初学一级) | 2016-04-16 10:34

@女子100: 在实际运用项目中,无限制的sql使用是一件很爽快的事。你考虑四个方面的问题,第一是存储,建议原样存储,不要污染客户的原始sql语句;第二是对数据库的影响,建议录入时让客户签署风险协议,执行sql后果自负;第三对服务器的影响,因为数据库是在客户主机上,不会对你的服务器有影响;第四攻击性脚本问题,你只呈现数据,所有特殊字符全部转码后呈现。

支持(0) 反对(0) 上帝之城 | 园豆:2549 (老鸟四级) | 2016-04-16 16:35
0

不着急想着安全,先把功能实现了

最后你会发现,你写好的功能用户都不会

收获园豆:2
刘宏玺 | 园豆:14020 (专家六级) | 2016-04-15 20:58

实现之前考虑下缺陷 是很应该的吧,,如果做好了,结果漏洞百出,重做 不是很花时间?

其实基本功能我是已经做好给客户的,但是要预防有些要求多点的客户,干脆就开放给他们自己查,有什么字段我都会展示出来

现在只是在想 如果有恶意 的用户 ,会对我服务器伤害大

等下害我服务器罢工了就不好了

支持(0) 反对(0) 女子100 | 园豆:85 (初学一级) | 2016-04-16 10:39
0

对你影响应该不大。主要还是优化好你的代码及服务器配置。

sql注入攻击过滤一下。添加好操作日志记录。弄一下接口报警,设置好接口等请求时间。。。。。

收获园豆:3
无影飞絮剑 | 园豆:1155 (小虾三级) | 2016-04-16 11:26
0

你要做这样的系统,还不如教会客户使用数据库客户端,还要系统干啥

收获园豆:2
Rich.T | 园豆:3440 (老鸟四级) | 2016-04-18 10:59

我要绑定客户成为我的会员咯,有客户才能考虑赚钱嘛

支持(0) 反对(0) 女子100 | 园豆:85 (初学一级) | 2016-04-21 09:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册