1.浏览器原理之浏览器安全

目录

  • 1.XSS攻击
    • 1)XSS概念
    • 2)XSS的攻击类型
    • 3)如何预防XSS攻击?
  • CSRF攻击
    • 1)CSRF概念
    • 2)CSRF攻击类型
  • 中间人攻击
    • 1)中间人概念
    • 2)中间人攻击过程
  • 网络劫持
    • 1)DNS劫持
    • 2)HTTP劫持
    • 3)预防网络劫持

1.XSS攻击

1)XSS概念

跨站脚本攻击(cross site scripting,XSS),是一种代码注入攻击。

攻击者通过在网站注入恶意脚本,使之在用户的浏览器上运行,从而盗取用户的信息如cookie等。
XSS的本质是因为网站没有对恶意代码进行过滤,与正常的代码混合在一起了,浏览器没有办法分辨哪些脚本是可信的,从而导致了恶意代码的执行。
攻击者可以通过跨站脚本攻击可以进行以下操作:

  • 获取页面的数据,如DOM,cookie,localStorage
  • 拒绝服务攻击(Denial of Service, DOS),发送合理请求,占用服务器资源,从而使用户无法访问服务器
  • 破坏页面结构
  • 流量劫持(将连接指向某网站)

2)XSS的攻击类型

XSS可以分为存储型反射型DOM型

  • 存储型指的是恶意脚本会存储在目标服务器上,当浏览器请求数据时,脚本从服务器传回并执行。
  • 反射型指的是攻击者诱导用户访问一个带有恶意代码的URL后,服务器端接收数据后处理,然后将带有恶意代码的数据发送到浏览器端,浏览器端解析这段带有XSS代码的数据后当做脚本执行,最终完成XSS攻击。
  • DOM型指的通过修改页面的DOM节点形成的XSS。

3)如何预防XSS攻击?

  • 可以从浏览器的执行来进行预防,一种是使用纯前端的方式,不用服务器拼接后返回的方式(不使用服务端渲染)。另一种对需要插入到HTML中的代码做好充分的的转义。对于DOM型的攻击,主要是前端脚本的不可靠造成的,对于数据获取渲染和字符串拼接的时候应该对可能出现的恶意代码情况进行判断。
  • 使用内容安全策略(Content Security Policy,CSP),CSP的本质是建立一个白名单,告诉浏览器哪些外部资源可以进行加载和执行,从而防止恶意代码的注入攻击。
    -对一些敏感信息进行保护,比如cookie使用http-only,使得脚本无法获取。也可以使用验证码,避免脚本伪装成用户执行一些操作。

CSRF攻击

1)CSRF概念

跨站请求伪造攻击(cross site request forgery, CSRF),攻击者引诱用户进入一个第三方网站,然后该网站向被攻击网站发送跨站请求。如果用户在被攻击网站中保持登录状态,那么攻击者就可以利用这个登录状态,绕过后台的用户认证,冒充用户向服务器执行一些操作。
CSRF攻击的本质是利用cookie会在同源请求中携带发送给服务器的特点,以此来实现用户的冒充。

2)CSRF攻击类型

  • GET类型的CSRF攻击,比如构建一个表单,然后隐藏它,当用户进入页面时,自动提交这个表单
  • POST类型的CSRF攻击,比如构建一个表单,然后隐藏它,当用户进入页面时,自动提交这个表单
  • 链接类型的CSRF攻击,比如在a标签的href属性里构建一个请求,然后诱导用户去点击

中间人攻击

1)中间人概念

中间人(Man-in-the-middle attack,MITM)是指攻击者与通讯的两端(通讯的两端一般指:客户端和服务器端)分别创建独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的链接与对方直接对话,但事实上整个会话都被攻击者完全控制。在中间人攻击中,攻击者可以拦截通讯双方的通过并插入新的内容。

2)中间人攻击过程

  • 客户端发送请求到服务器,请求被中间人截获
  • 服务器向客户端发送公钥
  • 中间人截获公钥,保留在自己手上,然后自己生成一个伪造的到公钥,发送给客户端
  • 客户端收到伪造的公钥后,生成加密hash值发给服务器
  • 中间人获得hash值,用自己的私钥解密获得真密钥,同时生成假的加密hash值,发送给服务器
  • 服务器用私钥解密获得假密钥,然后加密数据传输给客户端

网络劫持

1)DNS劫持

DNS劫持举例:输入京东被强制跳转到淘宝这就属于dns劫持
  • DNS强制解析:通过修改运营商的本地DNS记录,来引导用户流量到缓存服务器
  • 302跳转到方式:通过监控网络出口的流量,分析判断哪些内容是可以劫持处理的,再对劫持的内存发起302跳转的回复,引导用户获取内容。

2)HTTP劫持

HTTP劫持举例:访问谷歌但是一直有贪玩蓝月的广告
由于http明文传输,运营商会修改你的http响应内容(即加广告)

3)预防网络劫持

DNS劫持由于涉嫌违法,已经被监管起来,现在很少会有DNS劫持,而http劫持依然非常盛行,最有效的办法就是全站HTTPS,将HTTP加密,这使得运营商无法获取明文,就无法劫持你的响应内容。

你可能感兴趣的:(安全)