开发人员使数据库面临风险的十大方面
上一篇 /
下一篇 2012-10-15 10:25:39
/ 个人分类:杂谈
,_iyvv[1Cq0 虽然这种对关键数据的简易访问已经极大地提高了工作人员的效率,并提高了顾客的购买欲,但它也为关键数据库打开了巨大的风险之门。不幸的是,许多风险是由缺乏资源的开发人员带来的,他们往往无法得到足够的时间、金钱、教育以及来自管理人员的支持,因而无法设计开发没有漏洞的应用程序。
(oN%w.QpHKq0A0[I"[t~ r!L$z0 在上述资源无法到位时,开发人员往往会犯这些错误:
&t5sHMF)a,e&M03t%E!fwUM6f"d"yt0 1、过于相信输入方法
W)r)Y2g"Qa*X051Testing软件测试网H%}DL;E 当今开发人员将数据库置于风险之中的一种重要方法是,使其应用程序遭受SQL注入攻击。当开发人员过于相信用户输入时,就往往会出现SQL注入漏洞。51Testing软件测试网0FXt/}h,c;pn3y
51Testing软件测试网E)U+]DvoOV8R 如果不对其进行验证,例如,如果不验证一个只接受数字的电话号码字段,开发者就有可能允许黑客对数据库进行终端访问。例如,插入到表单域中的单引号有可能过早地关闭应用程序本应实施的合法SQL查询,从而使攻击者可以构建并提交新的查询。51Testing软件测试网(t:R^?I)H+c9`/]1F
"S(n0}M&C)il/N0 解决这种问题的最好方法之一就是使用参数化查询。
5j
G'v"_|:c"R:t051Testing软件测试网3\v1sP d
U 参数化查询可以防止攻击者改变查询中的逻辑或代码,并阻止大多数SQL注入攻击。参数化查询出现的时间就像数据库一样长,它不像安全的其它许多领域,使用参数化查询也是保障性能和代码可维护性的最佳方法。
J0Z.PGke051Testing软件测试网Qrb(I%f-}\
\
z,o 但开发人员不应当停留于此。还要对用户输入进行净化和验证,因为有时参数化并不可行。即使可行,攻击者也可以将非验证的输入用于其它恶意目的,如跨站脚本攻击等。51Testing软件测试网Lb_a$|3S v:r
51Testing软件测试网c0|MNl)R 最老套且最糟糕的问题是,不对用户输入进行净化,即在对数据库运行查询之前,不剔除用户输入中并不需要的字符,例如不移除撇号或分号。