三大措施将SQL注入攻击的危害最小化-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

三大措施将SQL注入攻击的危害最小化

简介:
使用用户提供的数据进行数据库查询的任何应用程序是SQL注入攻击的一个潜在目标。数据库管理员可能无法完全阻止针对其数据库服务器的SQL注入式攻击;但是,管理员们和应用程序开发人员可以做一些事情,将这些攻击的影响最小化。那么
 
数据库管理员可以做什么呢?
 
 
 
不要让数据库和Web服务器放在同一台计算机上。
 
使用防火墙或不可路由的IP地址来阻止到数据库的互联网访问。一旦配置完毕,来自数据库服务器的数据包将不能被转发到互联网。在Web服务器上需要添加一条路由,这样才能找到数据库服务器。
 
配置可信任的IP接入和访问(例如,IPSEC),以控制哪些机器能够与数据库服务器通信。
 
从数据库服务器上移除所有的示例脚本和应用程序。
 
为每一个应用程序的数据库连接账户使用一个专用的低特权账户。不要使用sa、dba、admin。
 
不要准许用户或应用程序直接访问数据库表。要使用对数据库拥有有限访问的应用程序角色。如果应用程序仅需要读取访问,就要将数据库的访问限制为只读。
 
从生产数据库中移除未用的存储过程。
 
将对应用程序的访问仅授权给用户创建的存储过程。
 
不要将应用程序的“_ANY_”授权给操作系统命令或系统存储过程。
 

应用程序的设计人员可以做什么呢?
 
 
 
程序设计人员肩负着保障Web应用程序安全的重要责任。在设计和编码阶段加强安全审察才是杜绝程序漏洞的关键。大体而言,程序设计者至少应当实施下面的一些措施:
 
要创建应用程序要生成的特定的通用错误消息。因为,在一次SQL注入攻击期间,通过数据库生成的默认的错误消息,攻击者可以获取有价值的信息,如表格和栏的名称。
 
在将用户服务的输入提交给数据库之前,验证用户输入的合法性。仅接受所期望的用户输入,并限制其长度。注意,只要可能,使用白名单列表检查所有的用户输入。应用程序服务器防火墙可被用于检查所有的输入,并仅接受那些符合标准的输入。
 
在程序开发期间,使用Web应用程序扫描工具发现代码中漏洞。
 
将Web应用程序与SQL数据库隔离开来,将应用程序所要求的所有SQL放置在数据库服务器上。
 
使用静态查询。如果需要动态查询,就使用准备好的语句。
 
使用一个安全的接口,如ADO的Command Object,使应用程序执行存储过程。
 
检测SQL注入漏洞和攻击
 
 
 
要检测易于受攻击的应用程序并不是简单事情,因为这些漏洞可能存在于面向用户的任何应用程序接口中。虽然并非所有的SQL注入攻击技术都易于检测,但数据库管理员或开发人员可以做以下的事情:
 
阅读Web服务器的日志。有时,在这些日志中就可轻易地发现SQL注入攻击,因为这时写往日志的登录项目要比平常多得多。
 
查找HTTP 404和HTTP 500错误日志项目,以及程序生成的检查用户输入的其它的错误日志项目。
 
使用Web应用程序扫描工具。这些工具可被用于警告数据库管理员,告知管理员应用程序中易受SQL注入攻击的地方。
 
在部署应用程序之前,检查其中的SQL注入因素至关重要。




本文转自 fish_yy 51CTO博客,原文链接:http://blog.51cto.com/tester2test/137600,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章
最新文章
相关文章