web安全XSS攻击防范

  XSS全称(Cross Site Scripting)跨站脚本攻击,是Web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如JavaScript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的,比如获取用户的Cookie,导航到恶意网站,携带木马等。

1.XSS是如何发生的呢?

1.介绍

  xss攻击是跨站脚本攻击,例如在表单中提交含有可执行的JavaScript的内容文本,如果服务端没有过滤或转义这些脚本,而这些脚本由通过内容的形式发布到了页面上,这个时候如果有其他用户访问这个网页,那么浏览器就会执行这些脚本,从而被攻击,从而获取用户的cookie等信息。

2.防御

  • 对于敏感的cookie信息,使用HTTPOnly,使用document对象中找不到cookie。
  • 对于用户输入的信息要进行转义

2.CSRF攻击

1.介绍

  CSRF攻击即跨站域请求伪造,例如,小明在浏览银行A网站的时候并没有关掉银行网站,这时小明又访问了携带CSRF攻击的B网站,而这时候B网站通过对银行的服务器发送转账请求,并且携带小明的银行网站的cookie信息,在参数上把小明账号上的钱转到B网站所有人的账户上,这时url得到响应,小明的钱就丢了。

2.防御

  • 敏感请求使用验证码
  • 验证HTTP Referer字段。Referer字段记录了HTTP请求的来源地址,从银行A网站发出来的请求会带有A网站的地址,从携带CSRF地址发出的请求会携带B网站的地址,我们只需在每个敏感请求验证Referer值,如果是来自A网站的通过,否则不通过。但是这种把安全寄托于浏览器,并不完全安全,在某些浏览器上,还是可以通过篡改Referer从而进行CSRF攻击。而且,在某些用户禁用Referer的情况下,服务器会一直拒绝用户的请求。
  • 在请求地址中添加token并验证。在用户登录之后,产生token并放入session中,在每次请求时把token从session中拿出来,以参数的形式加入请求,在服务器建立拦截器验证该token,token则通过,否则拒绝。但是这种方法也是有安全问题的,在某些网站支持用户发表链接的,那么黑客在该网站发布自己的个人 网站地址,系统也会为这个地址后加上token,则黑客可以在自己的网站上得到这个token参数,从而发起CSRF攻击。
  • 在HTTP头中自定义属性token并验证。把token作为自定义属性放在HTTP头中,通过封装XMLHTTPRequest可以一次性给所有请求加上token属性。这样子token就不会暴露在浏览器地址中

3.SQL注入

1.介绍

  SQL注入攻击,攻击者在提交表单的时候,在表单上面填写相关的sql语句,而系统把这些字段当成普通的变量发送给服务端进行sql查询,则,由攻击者填写的sql会拼接在系统的sql语句上,从而进行数据库的某些操作。

例如在简单的登录表单界面

<form action="/login" method="POST">
    Username: <input type="text" name="username" />
    Password: <input type="password" name="password" />
    <input type="submit" value="登陆" />
</form>

这时候系统处理的sql语句是这样的

username:=r.Form.Get("username")
password:=r.Form.Get("password")
sql:="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'"

而这时候攻击者输入的用户名如下,密码为任意值的情况下

myuser' or 'foo' = 'foo' --

那么系统的SQL语句就会变成这样

SELECT * FROM user WHERE username='myuser' or 'foo' = 'foo' --'' AND password='xxx'

则攻击者就会成功登录

2.防御

  • 表单过滤,验证表单提交的合法性,对一些特殊字符进行转义处理
  • 数据库权限最小化
  • 查询语句使用数据库提供的参数化查询接口,不要直接拼接SQL

4.身份证和会话

1.攻击

 黑客在浏览器中停用JS,防止客户端校验,从而进行某些操作

2.防御

  • 隐藏敏感信息。
  • 对敏感信息进行加密
  • session定期失效

5.权限和访问控制

1.攻击

  能通过url参数的修改达到访问他人页面,例如,黑客能够使用以下的链接去访问在某商城上自己的订单链接

https://***.***.com/normal/item.action?orderid=51338221644

这个时候如果网站没有相关权限验证,那么他也能通过下面的链接去访问其他人的订单

https://***.***.com/normal/item.action?orderid=其他id

这样子就会造成商城其他人的隐私的泄漏

2.防御

  • 添加权限系统,访问的时候可以加上相应的校验

6.不安全加密存储

1.防御

  • 加密存储敏感信息
  • 不用md5加密

7.上传漏洞

1.攻击

  在图片上传的时候,攻击者上传非图片,而是可远程执行的脚本,这时候,入侵者就可以远程的执行脚本来对服务器进行攻击

2.防御

  • 限制文件上传类型
  • 使用第三方文件托管等

8.传输层未加密

1.防御

  • 使用安全的https版本
  • 敏感信息使用https传输
  • 非敏感信息使用http传输

9.未验证的重定向和转发

1.攻击

  用于钓鱼,黑客在存在漏洞的网址后添加跳转参数,并且把参数转码,把链接发送给用户,诱导用户点击,这时候用户看到链接的最前面是熟悉的网址,会点击进去,从而是用户的点击发送重定向到非法网站。

2.防御

  • 添加跳转名单
  • 跳转前提示用户即将发送跳转到其他可疑网页

10.webShell

1.攻击

  黑客在win系统中向被攻击网站上传abc.asp;.jsp文件,这时候系统识别为jsp文件,然后传送到服务器的时候,某些系统上面会识别为asp文件。

猜你喜欢

转载自blog.csdn.net/maggie_live/article/details/80618920