Web “究竟是什么?”;基于DOM的XSS攻击“;?

Web “究竟是什么?”;基于DOM的XSS攻击“;?,web,xss,Web,Xss,我从中读到: 基于DOM的XSS攻击:由于 在受害者浏览器中修改受害者使用的DOM环境 原始客户端脚本,以便客户端代码以 出人意料的方式。也就是说,页面本身不会改变,但是 页面中包含的客户端代码由于 在DOM环境中发生的恶意修改 有人能举个例子吗?它不像存储的XSS攻击和反射的XSS攻击那样容易描绘 该文本看起来是部分的副本(反之亦然) 基本上,这种想法是,与“反射”或“存储”XSS不同,攻击者实际上不需要获取从服务器发回的文档中包含的代码,而是利用已经存在的脚本,并使用攻击者可以更改的某些属性

我从中读到:

基于DOM的XSS攻击:由于 在受害者浏览器中修改受害者使用的DOM环境 原始客户端脚本,以便客户端代码以 出人意料的方式。也就是说,页面本身不会改变,但是 页面中包含的客户端代码由于 在DOM环境中发生的恶意修改


有人能举个例子吗?它不像
存储的XSS攻击
反射的XSS攻击
那样容易描绘

该文本看起来是部分的副本(反之亦然)

基本上,这种想法是,与“反射”或“存储”XSS不同,攻击者实际上不需要获取从服务器发回的文档中包含的代码,而是利用已经存在的脚本,并使用攻击者可以更改的某些属性或数据


他们给出的示例是使用
document.location.href
属性的一部分调用
document.write
的脚本。在不让服务器存储或反映任何内容的情况下,攻击者可以通过将
放入URL来获取该页面上执行的代码。

在基于DOM的XSS中,来自服务器的HTTP响应不会改变,但是由于DOM环境中发生的恶意修改,页面中包含的客户端代码的执行方式不同。下面是一个基于DOM的XSS示例(摘自):

假设以下代码用于创建一个表单,让用户选择他/她的首选语言。查询字符串中还提供了默认语言,作为参数“default”

Select your language:
<select><script>    
document.write("<OPTION value=1>"+document.location.href.substring(document.location.href.indexOf("default=")+8)+"</OPTION>");    
document.write("<OPTION value=2>English</OPTION>");    
</script></select>
通过向受害者发送以下URL,可以完成针对此页面的基于DOM的XSS攻击:

http://www.some.site/page.html?default=<script>alert(document.cookie)</script>

奖金:


Facebook提出了一个针对XSS欺诈的解决方案,欺诈者诱骗用户将恶意内容复制并粘贴到浏览器的web开发者控制台。

如何防止此类攻击,如果URL本身被修改,那么受害者手中是否有任何东西可以主动阻止此类攻击。
http://www.some.site/page.html?default=<script>alert(document.cookie)</script>
Select your language:
<select>    
<OPTION value=1><script>alert(document.cookie)</script></OPTION>
<OPTION value=2>English</OPTION>
</select>