Javascript 注入攻击

Javascript 注入攻击?

什么是javascript注入攻击呢?其实比较其他的攻击,javascript可能相对简单一些。

每当接受用户输入的内容并重新显示这些内容的时候,网站就容易受到这种攻击。

用asp.net mvc来个简单的例子:

[ValidateInput(false)]
    public class HomeController : Controller
    {
        public string Index(string genre)
        {
            //将genre参数原封不动的返回
            string result = genre;
            return result;
        }

        public ActionResult About()
        {
            return View();
        }
    }
这是controller的代码, 一个url请求经过route解析之后,会到对应的action中。

对于这个index方法,不需要call view层面的代码,直接会在页面上将genre这个参数以字符串的方式显示出来。

如果对于正常的url 比如http://localhost:1796/home/index?genre=abc ,那么页面就会显示abc

但是javascript攻击的话,比如url是http://localhost:1796/home/index?genre=<script>window.location='http://baidu.com/'</script>

这里还分两种情况

1,Chrome浏览器下的情况:

表面现象是什么都没有返回,但是打开调试器,会发现有一个页面错误

Refused to execute a JavaScript script. Source code of script found within request.

2. 来看看IE的情况:

尼玛,直接就跳转到baidu页面了, IE,你果然牛X。


其他的浏览器没有实验。

个人判断chrome浏览器的行为是这样的,

1.从server端返回的结果是<script>window.location='http://baidu.com/'</script>

2.浏览器说,我cao,这是一段js代码,我是执行还是不执行呢?

3.不着急,先看看刚才的request是什么, http://localhost:1796/home/index?genre=<script>window.location='http://baidu.com/'</script>

4.chrome浏览器:“尼玛,这是典型的javascript攻击啊,因为匹配reuqest和返回的js代码是一样的”

5.妈的,老子拒绝执行!

这样来意淫一下chrome的执行,觉得chrome还是很聪明的。


PS:实际上asp.net mvc框架还是比较优秀的。

细心的你可能会发现controller的代码里面多了一行[ValidateInput(false)]

目的是屏蔽mvc的校验querystring这块,如果url里面包含<script>这样的东西,http请求就不会达到urlRoute层。

而是被System.Web.HttpRequest率先截获,抛出一个异常

A potentially dangerous Request.QueryString value was detected from the client (genre="<script>

而加上[ValidateInput(false)]的目的就是关闭http的校验。



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值