浅谈web安全

web安全一直是很头疼的问题,由于请求链接,接口,参数是直接暴露在外的。很容易受到各种攻击。
常见的web攻击有:

  • sql注入
  • 跨站脚本漏洞(XSS)
  • 跨站请求伪造(XSRF)
  • 文件上传漏洞

1,关于sql注入
原理:通过web表单提交,输入域名页面请求的参数组合到查询的SQL命令中,最终达到欺骗服务器执行恶意的SQL命令。

最简单的万能密码的例子
比如网站要输入用户名和密码:admin和12345
在后台一般这样判断的:

select id from users where username='admin' and password='12345';

用于验证用户名密码是否正确
sql注入:如果在用户名填’ ’ or 1=1 – ,密码随便填

select id from users where username ' ' or 1=1 -- and password ='234'

这样就跳过了验证。1=1永远成立,而’-- '表示后面的sql语句被注释掉了。

常见场景和如何判断是否存在SQL注入:
常见于HTTP://www.xxx.xxx/index.asp?id=XX这种带参数的动态网页中,且访问了数据库。
以此为例:此在后台的执行语句为:

select * from 表名 where 字段= a 

以下三步骤可以判断是否存在SQL注入

  1. HTTP://www.xxx.xxx/index.asp?id=XX’ (在参数后面附加单引号)此时语句变成了

    select * from 表名 where 字段= a'
    

    如果执行失败,数据库返回异常就可能存在sql注入。

  2. HTTP://www.xxx.xxx/index.asp?id=XX and 1=1 (在参数后面加上 and 1=1),此时语句变成了

    select * from 表名 where 字段= a and 1=1
    

    因为1=1永远为真,如果运行结果跟正常一样。存在sql漏洞。

  3. HTTP://www.xxx.xxx/index.asp?id=XX and 1=2 在参数后面加上 and 1=2)此时语句变成了

    select * from 表名 where 字段= a and 1=2
    

    因为条件永远为假,如果执行失败。

如果是三个步全部都满足,说明一定存在SQL注入的漏洞。

网上注入的工具还是很多的,如批量注入的明小子、啊D注入工具、椰树、御剑等等以后可以多了解了解,这篇关于SQL注入暂时写到这,相信你也有一定的了解了。

2,XSS跨站脚本攻击
原理:利用网站对用户提交的数据没有转义处理或者过滤不充分的缺点,添加一些代码,嵌入到web页面去,使别的用户访问都会执行相应的嵌入代码。从而盗取用户资料,进行恶意操作等。

XSS攻击分类

  • 反射型XSS攻击
    特点:攻击者注入的数据反映在相应中,每次攻击需要用户点击
    如:
    正常的发送消息http://www.test.com/message.php?send=Hello,World!
    接收者会显示Hello,World!
    当恶意写为

     http://www.test.com/message.php?send=<script>alert(‘警告!’)</script>!
    

    接收者会弹出警告窗口

  • 存储型XSS攻击
    特点:xss攻击代码存储在网站数据库,每当用户打开的时候执行。持久型(存储型)xss比非持久型危害性更大。
    如:
    留言板表单中的表单域:

      <input type=“text” name=“content” value=“这里是用户填写的数据”>
    

    正常的是用户提交留言信息,存储在数据库。其他用户访问留言,应用数据查询显示。
    异常:

    攻击者在value填写【或者html其他标签(破坏样式。。。)、一段攻击型代码】;

    数据存储在数据库中,当其他用户访问,会执行这些恶意代码。

  • DOMBasedXSS(基于dom的跨站点脚本攻击)
    特点:基于DOM的XSS有时也称为type0XSS。当用户能够通过交互修改浏览器页面中的DOM(DocumentObjectModel)并显示在浏览器上时,就有可能产生这种漏洞,从效果上来说它也是反射型XSS。

3,跨站请求伪造(XSRF)
原理:攻击者(黑客,钓鱼网站)盗用你的身份,以你的名义发送恶意的请求,包括发送邮件,发送消息,盗用账号等。从而使你的隐私泄露或者财产损失。
在这里插入图片描述
从上图可以看出,要完成XSRF攻击。必须走以下两步骤:

  • 登录受信用的网站a,并在本地生成cookie.
  • 在不登出a的情况下(会话生效),访问危险网站。

防御手段:

  1. 验证HTTP Referer字段
    HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的(https:/xxxxx/MOA/index.php)
    如果是来自于危险网站,在后台添加拦截器进行处理即可。但是一些低级的浏览器可以通过某种方式篡改Referer值。这样不能完全拦截。
  2. 添加token验证
    XSRF攻击之所以能成功,是因为伪造了客户请求,利用客户生效的cookie会话进行请求操作。如果每次验证请求身份就能防御
  • 用户访问某个表单页面。
  • 服务端生成token,放在用户session或者cookie中
  • 在页面表单带上token参数。
  • 用户提交表单,服务端验证提交表单中的token是否跟服务端生成的合法一致。否则为非合法请求。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值