March 29, 2017

《SQL注入攻击与防御》之防御

代码层防御

领域驱动的安全性

SQL注入之所以发生,是因为我们的应用程序不正确的将数据在不同表示方式之间进行映射

通过将数据封装到有效的值对象中,并限制对原始数据的访问,我们就可以控制对数据的使用

使用过参数化语句

动态SQL(或者将SQL查询组装成包含受用户控制的输入的字符串并提交给数据库)是引发SQL注入漏洞的主要原因

应该使用参数化语句(也叫做预处理语句)而非动态SQL来安全的组装SQL查询

在提供数据时可以只使用参数化语句,但却无法使用参数化语句来提供SQL关键字或标识符(比如表名或者列名)

验证输入

尽可能坚持使用白名单输入验证(只接收期望的已知良好的输入)

确......

March 25, 2017

《SQL注入攻击与防御》之高级攻击

SQL盲注利用

寻找并确认SQL盲注

无效数据将返回通用错误页面而非详细错误,这时可通过包含副作用比如时间延迟来确认SQL注入,还可以拆分与平衡参数。如果数字字段为5,就提交3+2或者6-1;如果字符串参数中包含"MadBod",就提交‘Mad’||'Bod'

请思考漏洞的属性:是否强制产生错误以及能否控制无错误页面的内容

可通过在SQL中提问某一位是0或者1来推断某个信息位,有很多推断技术可用于实现该目标

使用基于时间的技术

可使用逐位方法或二分搜索法提取数据并利用延迟表示数据的值,可使用明确的SLEEP类型函数或运行很长的查询类引入延迟

通......

February 11, 2017

《SQL注入攻击与防御》之攻击

重点看了攻击方面的内容,防御没怎么看,我觉得在攻击方面的知识没有消化理解的话,可能防御类的知识也会比较糊涂,决定过一段时间,自己实践过sql攻击之后,有了一些理解,再来学习防御,会有收获。

计划:去ichunqiu学习学习sqlmap的使用,之前简单学习过,这次得找个站练练手,至少成功实践一次

什么是SQL注入

理解web应用的工作原理

Web应用是一种使用Web浏览器并通过Internet或内部网络访问的程序。它同时还是一种使用浏览器所支持语言(HTML,JavaScript,Java)编写的计算机软件程序,借助不同的web浏览器来呈现应用程序的可执行文件

基本的数据库驱动的动态w......