在图书管看到一本关于sql注入和防御的书籍,突然间兴趣就来。然后搜索就搜到了这么前辈的blog:http://www.cnblogs.com/rush/archive/2011/12/31/2309203.html
总结今天所看的内容:
首先了解到web应用的架构,理解sql注入是在逻辑层到存储层之间的。我们通过在表示层的输入来通过逻辑层转到存储层,并且在存储层起效。
1.可以在url的中注入自己的语句。在url中可以观察传递的参数的类型,如果是字符串我们则可以用类似与 ‘OR‘1‘=‘1 之类的返回,因为这种字符串加到原来url的参数中会使得查询的语句显示所有的查询结果;如果我们观察到参数的类型为整数,则可以直接加 OR ‘1‘=‘1‘,对与这么加当然是可以的。而且这么加也能够能到用户信息,一般来说这么处理的话会使得非用户的情况下登录得到用户,并以该用户登录应用。这些都是可以处理的,但是如果我们在其中加入的不是这个字符串的话,那么我们可以换个字符串。比如 UNION ALL SELECT LOAD_FILE(‘/etc/password‘)。从这里可以知道,如果如果网站对于用户输入的信息(post,get)的信息等没有预处理的话,可以再url上动手脚。而且可以在url的参数上添加任意字符串这就随意了。
这里我认为最主要的就是观察网页之间的数据信息,可以思考是否有可以注入的地方。
2.前面一种情况是正确的注入了sql了,但是当没有注入成功的时候并不代表着应用安全。如果sql注入失败的时候返回了错误的信息,会返回错误信息。可能网站反馈的错误信息能够提供线索。
3.作为一个web应用,也许根本就不需要数据就能进入下一个网页。我们可以在地址栏中直接输入下一个网页的url,然后则越过。
还有是数据库的配置的问题,对于数据库的默认账户应该注意。安全的方法是不同的操作的用户应该有不同的权限。
ps:即使只有三分钟的热度,但是不能没有热度。