SQL注入的攻击与防御

SQL注入和XSS的相似之处在于,其都是因为data和code没分离开所引起的安全问题,这里有两个利用条件,一个是数据用户能控制,一个是数据和程序的代码进行的拼接。在这里把知道的内容总结补充一下。 目录 盲注 Boolean-Based型 构造简单的条件语句,通过返回页面的内容是否产生变化,来判断SQL语句是否得到了执行。 Time-Based型 通过条件语句无法看出异常,因此用benchmark,if-sleep函数,或者构造大联合查询表,来通过延时的状况,判断出注入语句是否执行成功,属于一种边信道攻击。 报错注入 在有错误信息回显的页面中,通常使用floor,ExtractValue,UpdateXml三个函数引起报错,在其中加入我们要查询的内容获取数据。除此之外,对应不同MYSQL版本还有其余的函数可用,可以在网络上搜索一下。 宽字节注入 在之前的反思中有提到过,再复制粘贴一下= = 由于character_set_client(客户端的字符集)和character_set_connection(连接层的字符集)不同,或转换函数如,iconv、mb_conv...»

kafkatao kafkatao 分类:学习记录 标签:none

XSS与CSRF的防御

之前在面试的总结中简单的提到了XSS的区分和CSRF的防御手段,现在补一篇学习记录,关于XSS和CSRF的防御手段。 XSS的防御措施 输入输出检查方式 输入检查:对用户输入的数据进行合法性检查,对输入数据中敏感字符进行过滤编码转义,针对特定类型数据进行格式检查。除格检查外的防御最好放在服务器端实现。 输出检查:对会输出到页面、脚本中的数据做编码转义操作,如果输出是变量,尽量保证输出的变量在引号的内部。 根据输出点分类防御 输出在HTML标签中: 针对在<div>$a</div>标签中输出的内容,我在测试的时候一般是直接构造攻击性标签进行测试,防御方法是对数据进行HTML编码。 输出在HTML属性中: 如<a href="$a">这种,在测试的时候会去闭合属性字符串,然后在后半部分加入我们的标签或事件,防御方法是也对数据进行HTML编码。 在HTML标签事件中: 如<input onclick="func($a)" />,这种输出点可以直接引入js代码,因此应当进行Javascr...»

kafkatao kafkatao 分类:学习记录 标签:none