浅谈Web安全

SQL注入

479975-20170602200816368-485796818.png

479975-20170602200838039-2028976783.png
479975-20170602200933071-722415410.png

如果数据库用的是MyISAM引擎,且注入点是某个会锁表的语句(insert,replace,update,delete),那么整个数据表的访问都会被阻塞。禁用mysql的sleep函数,或者修改sleep上限,拒绝不合理的超长sleep。现实中很少用到这个sleep功能,就算遇到需要sleep的场景,也可以通过外部应用来实现sleep。

防止SQL注入
select * from test where id = $id;

http://localhost/view.php?id=112 or 1=1

select * from test where id = 112 or 1=1;
  • 2.特殊字符转义
username=admin&password=' or sleep(5)-- ddd
select * from TSUser where username = 'admin' and password = '' or sleep(5)-- ddd’
username=admin&password=\' or sleep(5)-- ddd
select * from TSUser where username = 'admin' and password = '\' or sleep(5)-- ddd'
  • 3.使用预编译语句
    在Java中使用PreparedStatement预编译语句可以在创建的时候将指定的SQL语句发送给DBMS完成解析、检查、编译等工作,能有效地防御SQL注入。

**注意:如果使用动态拼接的SQL语句,仍然是不安全的。如下例:

String sql = "select * from TSUser where username = ‘"+ username +"' and password = '"+ password +"'";
PreparedStatement ps = connection.prepareStatement(sql);
ResultSet resultSet = ps.executeQuery();

要想使PreparedStatement防御SQL注入,必须使用它的setter方法(setString、setInt等)

  • 4.框架技术—MyBatis
<select id="getBlogById" resultType="Blog" parameterType="int”>  
        select id,title,author,content  
        from blog where id=#{id}  
</select>  
select id,title,author,content from blog where id = ?     —>执行了预编译
<select id="orderBlog" resultType="Blog" parameterType="map">  
        select id,title,author,content  
        from blog order by ${orderParam}  
</select>  
select id,title,author,content from blog order by id     —>直接替换参数,没有执行预编译

在mybatis中,”${xxx}”这样格式不能避免注入攻击。但涉及到动态表名和列名时,只能使用“${xxx}”这样的参数格式,所以,这样的参数需要我们在代码中手工进行处理来防止注入。在编写mybatis的映射语句时,尽量采用“#{xxx}”这样的格式。若不得不使用“${xxx}”这样的参数,要手工地做好过滤工作,来防止sql注入攻击。

XSS跨站脚本攻击

XSS攻击是在网页中嵌入恶意脚本代码,当用户使用浏览器浏览被嵌入恶意脚本的页面时,恶意代码将会在用户的浏览器上执行
479975-20170602201340696-1431236438.png
479975-20170602201347430-1163505957.png

当用户访问一个带有XSS代码的URL请求时,服务器接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段带有XSS代码的数据后执行恶意脚本。

允许存储用户数据的Web应用程序都可能出现存储型XSS漏洞,当攻击者提交一段XSS代码后,服务器接收并存储。当用户访问某个页面时,这段XSS代码就会被程序读取出来相应给浏览器,造成XSS攻击。

http://files.cnblogs.com/files/umgsai/%E6%B5%85%E8%B0%88Web%E5%AE%89%E5%85%A8.key.zip

转载于:https://www.cnblogs.com/umgsai/p/6696552.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值