web网络安全

今天主要复习了一些比较常见的网络彻底的问题javascript

  1. XSS攻击html


他主要的作法就是在页面上执行一段javascript,获取网站的信息,如cookie,他主要分几个类型:java

  • 反射型,如在img中的url是一段带<script>的代码;他主要是设计一个url来获取客户信息web

  • 保存型:
    这种是脚本保存在数据库中,不通过滤就存储并显示给用户。实现这个过程主要分两步,先将恶意代码数据提交给服务器;而后服务器再将恶意代码返回给客户端,执行恶意代码;ajax

  • 基于DOM型:数据库

    攻击的过程能够用以下图来表示:
    图片描述json

    怎么防护:校验用户输入和校验Id类型,正则匹配; 在页面输出以前先进行转义,html编码,javascript编码;url编码; cspcanvas

    有可能会出现攻击的几个点:跨域

  • &号不该该出如今HTML的大部分节点中浏览器

  • 括号<>是不该该出如今标签内的,除非是引号引入

  • 在ext节点里面,<左尖括号有很大的危害

  • 引号在标签内可能有危害,具体危害取决于存在的位置,可是在text节点是没有危害的。

CSRF

  1. CSRF(Cross-site Request forgery)跨站请求伪造,他主要作的是,攻击者盗用你的登陆信息,以你的身份模拟发送各类请求。

    CSRF的攻击图:
    图片描述

从图中能够看出,要完成一次CSRF攻击,受害者必须完成两个步骤

  • 登陆受信任网站A,并在本地生成cookie

  • 在不退出A的状况下,访问危险网站B。

须要知足这两个条件,才会收到CSRF的攻击,由于你不能保证如下状况不会发生

  • 你登陆了一个网站后,再也不打开一个tab页面并访问另外的网站,特别是如今浏览器都是支持多tab的。

  • 关闭本地的浏览器后,本地的Cookie不会马上过时

  • 上图中的攻击网站,可能存在一个存在其余漏洞的可信任的常常被人访问的网站

如何预防CRSF:

服务端预防: 正确使用GET、POST和Cookie; 在非GET请求中增长伪随机数;

随机数的增长主要有三个方式:
 - 为每一个用户生成一个惟一的cookie token,全部表单都包含同一个伪随机值
 - 每一个请求都是用验证码,这个方案完美,由于要屡次输入验证码,因此用户友好性不好,因此不适合实际运用
 - 不一样的表单包含一个不一样的伪随机值

3.HTTP劫持:主要是运营商,预防的方法是https

4.DNS劫持

HTML5的技术对网络安全的帮助

  • XMLHttpRequest Level 2 (Cross-origin Resource Sharing)
    阮一峰的博格

  • 本地存储: 增长了local storage 和 session storage,使存储信息从cookie中走出来

  • web worker(js多线程执行): 由于执行js会阻塞UI,h5实现了web worker这一机制,从而使得js可使用子线程去执行任务,不阻塞UI线程

  • web secket(服务器推送机制)主要是为了保持长连接

  • 新标签和新API,好比<video>,<audio>,<canvas>使得能够少用第三方插件,减小不可控安全问题
    (加强cookie的安全分方法: session cookie设置为true,建立cookie会被安全的形式向服务器传输,也就是在HTTPS链接中被浏览器传递到服务器端进行会话验证,若是是HTTP链接就不会传递信息,因此不会被窃取到Cookie的具体内容; HttpOnly属性,若是设置了HttpOnly属性,那么经过脚本将没法获取到Cookie信息,这样能有效的防止XSS攻击)

AJAX 跨域资源共享(CORS)

由于ajax是严格遵照同源策略的,因此诞生了ajax跨域方式的-CORS,就是为了解决跨域问题;除了这种方法之外,还有两种其余方式:jsonp的方式和flash跨域方案

CORS跨域的作法:用Access-Control-Allow-Origin这个头以及其余的头来实现的,客户端跨域访问另外一个服务器,服务器会肯定这个域名是否有权限来获取资源,如有则返回一个带有Access-Control-Allow-Origin头的response以及资源,若无则返回一个权限错误:XMLHttpRequest;

可是这个作法的风险点

http头信息能够伪造,说明头信息中的域名origin能够是假的,因此跨域是要配合身份验证进行的,因此跨域要带上session id;
就算带上了session id,但第三方仍是可能会入侵,致使源站信息泄露,因此CORS是个很是危险的东西;
内部信息泄露,内部成员打开了一个evil website, 致使信息泄露,内部网站的数据也将泄露;
设置了Access-Control-Allow-Origin,并对请求点作了请求控制,可是返回权限错误的时候,请求信息已经到了客户端;
CORS默认不携带会话信息,可是若是withCredentials设置为true,就能够携带,因此最好不要设置为false.万一设置为true,请在Access-Control-Allow-Origin上设置具体的域名,不要使用*。

防护姿式:

不要对Access-Control-Allow-Origin设置*
对跨域要验证session信息
严格审查请求信息,好比请求蚕食,还有http头信息

因此应该怎么使用:

图片描述

相关文章
相关标签/搜索