zoukankan      html  css  js  c++  java
  • [原]JS Eval参数单引号问题

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD>
     <BODY>
     {
     alert(str);
    idden; overflow-y: hidden;"> }
    <mce;"> <mce;"> 0px; 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;" id="_mcePaste"> var sstr = "gg'";
     var s = "ff" + sstr  + "dd" ;
     var func = eval("test");
     func.call(func,s);
      </script>
     </BODY>
    </HTML>

    最近在弄JS验证功能的时候 遇到了Eval的参数问题,花了些时间解决之后,稍微总结了下。

    问题示例:

    <HTML> 

    <BODY> 

     <script>

     var test =

     {show:function(str){alert(str);}}

     var s = "ffd'd" ;

     eval("test.show('" +s + "')");

     </script>  

    </BODY>

    </HTML>

      执行会报缺少')'

    方法一: 使用转义符

    <script>

     var test =

     {show:function(str){alert(str + 'test');}}

     var s = "ffd'd" ;

     eval("test.show('" +s.replace(/\\/g,"\\\\").replace(/'/g,"\\\'") + "')");

     </script>

    方法二:把方法参数作为JS类的属性

     <script>

     var test = {show:function(){alert(this.str);},str:''};

     var s = "ffd'd" ;

     test.str = s;

     eval("test.show()");

     </script> 

    方法三: 使用call

     <script>

     var test = {show:function(str){alert(str);}};

     var s = "ffd'd" ;

    var func = eval("test.show");

    func.call(func,s);

     </script>  

    方法四:最简单的方法,使用function对象

     <script>

     var test = {show:function(str){alert(str);}};

     var s = "ffd'd" ;

    var func = eval("test.show");

    func(s);

     </script>  

  • 相关阅读:
    EF Core 执行SQL语句和存储过程
    SQL优化之SELECT COUNT(*)
    SQL优化之SQL 进阶技巧(下)
    SQL优化之SQL 进阶技巧(上)
    旅游攻略:重庆红色之旅
    ASP.NET Core在CentOS上的最小化部署实践
    Windows平台部署Asp.Net Core应用
    kali 免杀工具shellter安装以及使用
    Ubuntu Server18.04配置静态IP
    Centos7系统配置静态IP
  • 原文地址:https://www.cnblogs.com/xjyggd/p/1687871.html
Copyright © 2011-2022 走看看