特殊字符与转义

       页面的文本框经常会遇到一些输入特殊字符的问题,这些特殊字符很可能造成页面跳转失败,sql注入,数据读出失败等问题。

     

      (1) 页面跳转的实现方式经常写这样的代码:


         window.location.href = '/DetailJudementByClass/Index?QuestionID=' + questionID + "&state="+state;


         当questionID和state出现&符号时,就会出现错误。


       (2)sql注入最经典的例子是‘1=1’的问题,当文本框中输入类似的符号便会出现问题了。


       (3)数据库设计经常会经常使用#符号作为分隔符进行拼接数据,当存入数据库的数据存放入#时就造成数据混乱。


         解决方法(1):

    function noNumbers(e) {

        var pattern = new RegExp("[`~!@@#%$\"^&*()=|{}':;',\\[\\].<>/?~!@@#¥……&*()——|{}【】‘;:”“'。,、?]")
        var rs = "";
        for (var i = 0; i < e.length; i++) {
            rs = rs + e.substr(i, 1).replace(pattern, '\\' + e.substr(i, 1));
        }
            $.get("/test/testAction", {"test":e,"a":e,"b":e}, function (data) {
                alert(data);
            });
        return rs;
     }


      解决思路,将特殊符号加上‘\’,转换成普通字符。


      解决方法(2):

    function TextValidate() {
        var code;
        var character;
        var err_msg = "文件夹名称不能包含下列字符之一:\n \\ / : * ? \" < > | & , ";
        if (document.all) {
            code = window.event.keyCode;
        }
        else {
            code = arguments.callee.caller.arguments[0].which;
        }
        var character = String.fromCharCode(code);
        var txt = new RegExp("[\\*,\\&,\\\\,\\/,\\?,\\|,\\:,\\<,\\!,\\(,\\),\\{,\\},\\#,\\$,\\%,\\_.\\-,\\=,\\^,\\>,\"]");
        if (txt.test(character)) {
        
            if (document.all) {
                document.getElementById("userName").textContent = document.getElementById("userName").textContent + '\\' + character;
                window.event.returnValue = false;
            }
            else {
                document.getElementById("userName").textContent =document.getElementById("userName").textContent+ '\\' + character;
                arguments.callee.caller.arguments[0].preventDefault();
            }
        }
    }


      为了将特殊符号传入后台,可以使用ajax或post定义data的方式进行传递,也可以防止部分特殊字符无法传递的问题。


       




  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值