Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【安全】XSS攻击 #99

Open
Easay opened this issue May 24, 2021 · 0 comments
Open

【安全】XSS攻击 #99

Easay opened this issue May 24, 2021 · 0 comments
Labels

Comments

@Easay
Copy link
Owner

Easay commented May 24, 2021

参考:前端面试查漏补缺--(七) XSS攻击与CSRF攻击

什么是XSS攻击

Cross-Site Scripting(跨站脚本攻击)简称 XSS,是一种代码注入攻击。攻击者通过在目标网站上注入恶意脚本,使之在用户的浏览器上运行。利用这些恶意脚本,攻击者可获取用户的敏感信息如 Cookie、SessionID 等,进而危害数据安全。

XSS常见的注入方法:

  • 在 HTML 中内嵌的文本中,恶意内容以 script 标签形成注入。
  • 在内联的 JavaScript 中,拼接的数据突破了原本的限制(字符串,变量,方法名等)。
  • 在标签属性中,恶意内容包含引号,从而突破属性值的限制,注入其他属性或者标签。
  • 在标签的 href、src 等属性中,包含 javascript: (伪协议)等可执行代码。
  • 在 onload、onerror、onclick 等事件中,注入不受控制代码。
  • 在 style 属性和标签中,包含类似 background-image:url("javascript:..."); 的代码(新版本浏览器已经可以防范)。
  • 在 style 属性和标签中,包含类似 expression(...) 的 CSS 表达式代码(新版本浏览器已经可以防范)。

XSS攻击的分类

反射型XSS

  • 攻击者构造出特殊的 URL,其中包含恶意代码。
  • 用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。
  • 用户浏览器接收到响应后解析执行,混在其中的恶意代码也被执行。
  • 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

存储型XSS

存储型XSS会把恶意代码存储在服务器端。比较常见的场景:黑客写一篇包含JS恶意代码的文章,文章发表后,所有访问该博客文章的用户,都会在他们的浏览器中执行这段恶意的JS代码,黑客将恶意的脚本保存在服务器端。

DOM Based XSS

通过修改页面的DOM节点形成的XSS攻击。

Cookie劫持

远程加载一个JS脚本,脚本中创建一个图片,其中src属性中将document.cookie对象作为参数发送给远程服务器。在远程服务器中会保留这一条请求的记录,其中包含了对应的cookie信息。

预防该攻击,可以通过服务器设置cookie时加HttpOnly标识。

@Easay Easay added the 安全 label May 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant