新闻资讯
来源:成都网站建设 作者:赛维思网络 发布日期:2014-04-04 浏览:2347次
除了利用表单域的保护较弱这一漏洞,SQL注入攻击含依赖于approved列恰好位于数据库结构中screenshot列的后面。正是由于这一点,只要在INSERT的最后增加1,就能将这个1设置到approved列。这里的问题在于构建INSERT查询所采用的做法是必须向所有列插入数据,而这增加了不必要的风险。可以将INSERT查询编写为准确地指定哪些值要放在哪些列中。
在表中插入数据时,数据的顺序必须与表结构中列的顺序完全一致。所以数据汇进入列中,不过实际上没有必要显式地插入ID,因为ID是自增的,而approved初始时总是0,更好的办法是只插入新数据明确需要的数据。ID和approved列则可以分别默认为auto_increment和0。
我们需要重新构造INSERT查询,在指定数据的一个列表之前先指定列的一个列表,各个列分别对应一个数据。这样就消除了意外设置approved列的风险,它不再作为查询的一部分。INSERT查询准确地指出了各个数据要存储在哪个列中,从而允许你插入数据而不必担心底层表结构。实际上,一般认为使用这种INSERT查询是一种更好的编程风格,这样依赖数据可以准确地插入到你希望的位置,而不再依赖于表的结构布局。
下一篇:表单遭到SQL注入攻击
Copyright © www.svis.cn All Rights Reserved. 成都赛维思网络技术有限公司 蜀ICP备13002520号-3 Sitemap