网络安全相关

网络安全相关知识

常见网络攻击

XSS攻击—一种代码注入攻击

可能产生的危害:

  1. 窃取cookie信息,黑客可以在 JavaScript 中通过 document.cookie获得
  2. 未授权操作,利用 JavaScript 脚本,让用户发送了一个微博,微博中同时还带有反射型 XSS 的链接。这样一来,每个点击链接的用户都会通过微博的形式,诱导更多的用户点击链接,一传十、十传百,造成大范围的传播。(XSS蠕虫)
  3. 按键记录和钓鱼,记录用户在浏览器中的大部分操作。比如:鼠标的轨迹、键盘输入的信息等。也就是说,你输入的账号名和密码,都可以被 JavaScript 记录下来,从而被黑客获取到。
    另外,即使某个存在 XSS 漏洞的页面不具备任何输入框,黑客还可以通过修改 DOM,伪造一个登录框,来诱导用户在本不需要登录的页面,去输入自己的用户名和密码。这也是“钓鱼”的一种形式,在这个过程中用户访问的域名是完全正常的,只是页面被篡改了,所以具备更高的迷惑性。
  4. eval和replace事件的组合利用,绕过规则,比如eval('~a~le~rt~~(~~1~~)~'.replace(/~/g, ''))

如何防范:
核心原则:一切用户输入皆不可信。
编码—对浏览器识别的符号进行编码,比如</>,但是也可能被编码的信息直接展示在了网页上。
检测—黑名单和白名单,黑名单屏蔽,白名单只允许某些
过滤
配置合适的csp,限制外部资源的访问
控制输入长度,虽然不能完全避免,但是可以增加攻击难度
http-only,禁止js获取cookie

CSRF—跨站请求伪造

攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击的网站执行某项操作的目的。
一个典型的CSRF攻击有着如下的流程:
受害者登录a.com,并保留了登录凭证(Cookie)。
攻击者引诱受害者访问了b.com。
b.com 向 a.com 发送了一个请求:a.com/act=xx。浏览器会默认携带a.com的Cookie。
a.com接收到请求后,对请求进行验证,并确认是受害者的凭证,误以为是受害者自己发送的请求。
a.com以受害者的名义执行了act=xx。
攻击完成,攻击者在受害者不知情的情况下,冒充受害者,让a.com执行了自己定义的操作。

如何防范:
验证码和密码打断csrf进程
token验证,但是需要每个form和a都加,工作量巨大
利用csrf不能获得cookie的特点,请求附带一个cookie信息,进行验证
利用Samesite,可以防范csrf,但是每次登陆不会附带cookie,每次都需要重新登录,体验不太好。

中间人攻击

攻击原理
用户在访问某个网站的时候,在浏览器里却往往直接输入网站域名。浏览器便向网站发起一次 HTTP 请求,在得到一个重定向响应后,再发起一次 HTTPS 请求并得到最终的响应内容。由于在建立起 HTTPS 连接之前存在一次明文的 HTTP 请求和重定向,使得攻击者可以以中间人的方式劫持这次请求,从而进行后续的攻击,例如窃听数据,篡改请求和响应,跳转到钓鱼网站等。
如何防范:
设置hsts,强制发起https请求
设置cookie secure,保证你的 session cookie 对于攻击者是不可见的,避免中间人攻击

上一篇

前端基础