乐趣区

关于程序员:XSS攻击是什么-面试题

XSS 攻打是什么?

要点:XSS 是跨站脚本攻打、向指标网站插入恶意代码、大量用户拜访网站时运行歹意脚本获取信息

答:
XSS 是跨站脚本攻打 (Cross Site Scripting),不写为 CSS 是为了防止和层叠样式表(Cascading Style Sheets)的缩写混同,所以将跨站脚本攻打写为 XSS。攻击者能够通过向 Web 页面外面插入 script 代码,当用户浏览这个页面时,就会运行被插入的 script 代码,达到攻击者的目标。XSS 的危害个别是泄露用户的登录信息 cookie,攻击者能够通过 cookie 绕过登录步骤间接进入站点。
XSS 的分类分为反射型和存储型。

反射型就是长期通过 url 拜访网站,网站服务端将恶意代码从 url 中取出,拼接在 HTML 中返回给浏览器,用户就会执行恶意代码。
存储型就是将恶意代码以留言的模式保留在服务器数据库,任何拜访网站的人都会受到攻打。
预防 XSS 攻打的计划根本是对数据进行严格的输入编码,比方 HTML 元素的编码,JavaScript 编码,css 编码,url 编码等等。

XSS 的危害:

获取 cookie:网站中的登录个别都是用 cookie 作为某个用户的身份证明,这是服务器端返回的一串字符。如果 cookie 被攻击者拿到,那么就能够绕过明码登录。当空间、论坛如果能够被插入 script 代码,那么进入空间或者论坛的人的账号就能够轻易被攻击者获取。
歹意跳转:间接在页面中插入 window.location.href 进行跳转。

XSS 的分类:

反射型 XSS(非长久型 XSS):通过 URL 参数间接注入

存储型 XSS(长久型 XSS):存储到数据库后读取时注入 XSS 的预防:
浏览器的进攻和“X-XSS-Protection”无关,默认值为 1,即默认关上 XSS 进攻,能够进攻反射型的 XSS,不过作用无限,只能进攻注入到 HTML 的节点内容或属性的 XSS,例如 URL 参数中蕴含 script 标签。不倡议只依赖此进攻伎俩。

进攻 HTML 节点内容,通过本义 < 为 < 以及 > 为 > 来实现进攻 HTML 节点内容。
预防 HTML 属性,通过本义 ”->&quto 来实现进攻,个别不本义空格,然而这要求属性必须带引号。
预防 JavaScript 代码,通过将数据进行 JSON 序列化。
进攻富文本是比较复杂的工程,因为富文本能够蕴含 HTML 和 script,这些难以预测与进攻,倡议是通过白名单的形式来过滤容许的 HTML 标签和标签的属性来进行进攻,大略的实现形式是:

将 HTML 代码段转成树级构造的数据 – 遍历树的每一个节点,过滤节点的类型和属性,或进行非凡解决

解决实现后,将树级构造转化成 HTML 代码 – 开启浏览器 XSS 进攻:Http Only cookie,禁止 JavaScript 读取某些敏感 Cookie,攻击者实现 XSS 注入后也无奈窃取此 Cookie。

退出移动版