JavaScript的 Cross Site 脚本注入风险
今天有人来公司推销网站安全扫描软件,演示了对JS的跨域脚本注入风险的扫描,以前没意识到,今天有所了解。如果您的程序页面有以下情况,那么JS脚本注入的风险就很大:
1)页面打开时,URL 有某个参数,例如 XXPage.aspx?XXParam=XXValue
2)aspx页面里有如下代码:
<script>
var p = "<%=Request["XXParam"];%>";
</script>
注入风险如下:
1)黑客假冒网站身份发送邮件给用户,用户打开网页链接,链接虽然是指向 XXPage.aspx,但 XXParam 却被做了改造,例如:XXParam 被设置为 "; document.location.href = 'http://www.xxx.com/XXFakePage.aspx';//"。注意,前面的双引号是用来屏蔽 var p = " 的,后面紧接着就是一个JS页面跳转语句;最后面的 //" 是用来屏蔽 JS 脚本中的后引号的。
你猜结果会怎么样?页面直接被跳转到 http://www.xxx.com/XXFakePage.aspx,如果这个页面是假冒页面,并且这个页面是嵌入在 Frameset 里的,那用户会在毫无觉察的情况下,把注入用户名、密码、银行卡账号密码提交到假冒页面上!!
对策:
方法一:不要用 <%=Request["XXParam"];%> 来解析参数值,而直接用 JS 脚本从URL获取参数值
方法二:把参数值先放在 HIDDEN 控件里,例如: <input type=hidden id=xxhid value="<%=Server.HtmlEncode(Request["XXParam"]);%>"> 里,然后在 JS 里改为 var p = document.all.xxhid.value;
应该还有其他方法,以上方法只是示意,没有去编译,仅供参考。
相关文档:
FireFox : addEventListener()方法 IE : attachEvent()方法 为HTML元素添加一个事件监听, 而不是直接对元素的事件属性(如:onclick、onmouseover)赋值。 这两种方法处理事件还是有很大区别的!事件属性只能赋值一种方法,即: button1.onclick = function() { alert(1); };
button1.onclick = function() { aler ......
一、新增一个option
var sel=document.getElementById("select的id");
var op=document.createElement("option");
op.value=值;
op.text=显示文本;
sel.add(op);
二、删除一个option
var sel=document.getElementById("typelist");
if(sel.selectedIndex==-1)
alert("请选 ......
javascript 是一种区分大小写的程序语言.
定义数组:
var strweek= new Array(7);
问号表达式
var i= (condition)?A:B;
相当于if-else 语句;condition 成立 执行A ,不成立执行B;
switch 语句
var i=3;
var result="";
swithck(i);
{
case 1;
result="First";
case 2;
result="Second";
ca ......
JavaScript的方法和技巧 收藏
有些时候你精通一门语言,但是会发现你其实整天在和其它语言打交道,也许你以为这些微不足道,不至于影响你的开发进度,但恰恰是这些你不重视的东西会浪费 你很多时间,我一直以为我早在几年前就已经精通JavaScript了,直到目前,我才越来越觉得JavaScript远比我想象的复杂和强大,我开始崇 ......
随着浏览器安全性的提高,要实现图片预览也越来越困难。
不过群众的智慧是无限的,网上也有很多变通或先进的方法来实现。
在研究了各种预览方法后,作为总结,写了这个程序,跟大家一起分享。
上次写的简便无刷新文件上传系统最初的目的就是用来实现这个图片预览效果。
兼容:ie6/7/8, firefox 3.5.5
后台支持下还兼容 ......