若何斩断SQL注入式攻击的猖獗大魔掌?[网络技术]
本文“若何斩断SQL注入式攻击的猖獗大魔掌?[网络技术]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
利用参数化查询
企业该当拟定并强化自行开辟软件的安全编码指南,要求开辟人员利用参数化查询来构建SQL查询,这样便可以将数据与代码区脱离来.
关于大都SQL查询来说,开辟人员需求指明某类尺度,为此,就需求操纵参数化查询,其实就是在运行时可传送的参数.参数化查询就是在SQL语句中有一个或多个嵌入参数的查询.这种将参数嵌入到SQL语句中的办法与动态构造SQL字符串相比,不易产生错误.下面我们看一个在.NET利用程序中利用参数化查询的例子.假定我们想给张三增添工资500元,可参考以下的代码.这些代码典范演示了参数化查询的利用,并展示了若何利用更新语句:
通过操纵SQL的更新号令,你可以更新记录.在上面的例子中,我们作了以下操作:成立并翻开一个数据库链接;成立一个代表履行更新语句的数据库号令;利用EDBCommand 的ExecuteNonQuery()办法履行插入号令.
每一个参数都用一个EDBParameter对象指明.关于需求在SQL语句中指定的每一个参数来说,你需求成立一个EDBParameter对象,然后将值指派给这个对象.然后,将EDBParameter对象增添到EDBCommand号令的参数集合.
关于大都开辟平台来说,该当利用参数化的语句而不是将用户输入嵌入到语句中.在很多情形下,SQL语句是固定的,每一个参数都是一个标量,而不是一个表.用户输入会被指派给一个参数.下面再给出一个利用Java和JDBC API的例子:
PreparedStatement prep = conn.prepareStatement("SELECT * FROM USERS WHERE USERNAME=? AND PASSWORD=?");
prep.setString(1, username);
prep.setString(2, password);
prep.executeQuery();
笔者用这些例子只是想奉告开辟人员,该当确保在查询数据库之前对输入举行净化.要保障用户输入到网站的内容就是你正要查找的数据范例,所以说,假如你正在探求一个数字,就要勤奋保障这种输入一定是一个数字而非字符.
实施过滤和监督工具
在Web利用程序和数据库这个水平上的过滤和监督工具可有助于禁止攻击并检测攻击行为,从而减轻表露在大规模的SQL注入式攻击中的风险.
在利用程序水平上,企业该当通过实施运行时的安全监督来防备SQL注入攻击和生产系统中的漏洞.一样地,Web利用防火墙也有助于企业布置某些基于行为的法则集,可以在发生侵害之前禁止攻击.
在数据库水平上,数据库活动监督还可以从后台过滤攻击.数据库的监督活动是对付SQL注入的一种很强盛的工具.关于目前所知道的注入攻击而言,该当布置好过滤器,以便向数据库管理员发出告诫:正在发生不太安全的问题;还要有一些普通的过滤器,用以查找SQL注入攻击中的典型本领,如破坏SQL代码的不法则的数字引用等.
尽心编制错误消息
黑客可以操纵你的错误消息,以便于将来对付你.所以开辟团队和数据库管理员都需求考虑:在用户输入某些出其不意的“数据”时,该当返回的错误消息.
企业该当配置Web服务器和数据库服务器,使其不输出错误或告诫消息.因为攻击者可以操纵“盲目SQL注入”等技术来理解你的数据库计划细节.
及时打补钉并强化数据
由于没有打补钉大概配置错误,而造成与Web利用程序相关联的数据库蒙受攻击,那么与SQL注入攻击相关的风险也会因之增添.
很明显,只要有补钉可用,你就需求给数据库打补钉,并且还要给Web利用程序和Web服务打补钉.
此外,别忘了你的数据库是怎样配置的.你需求禁用不必要的服务和功效,目的是为了强化数据库及其赖以运行的操作系统.
限制数据库的特权
最后,企业需求更好地管理与Web利用程序相关的账户与后台数据库交互的方法.很多问题之所以发生,其缘由在于数据库管理员全面开放了一些账户,其目的是为了让开辟人员更轻松地工作.但是,这些超级用户账户极易蒙受攻击,并会极大地增添由SQL注入攻击及别的Web攻击给数据库所造成的风险.
一定要精确地管理全部的账户,使其仅能以最低的特权拜候后台的数据库,当然前提是可以完成其工作.你一定要保障这些账户不会拥有对数据库作出更改的权利.
以上是“若何斩断SQL注入式攻击的猖獗大魔掌?[网络技术]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |