防止js注入 js对一些特殊字符进行转义 大牛进~

时间:2021-10-26 13:59:42
请高手帮忙写个公用性的方法 以及思路  多处用到
'
"
)--
>
<
&
\
/.

特殊字符主要有这几部分   出现这个的时候总是被  安全管理的同事给反馈  要求处理····
在textarea里面输入或者粘贴过来的 提交的时候能否操作~

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>replace</title>
</head>
<script src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
console.log("请大神帮忙");
})
</script>
<body>
<div>
<textarea  id="name"></textarea>
<input type="button" value="提交" id="commit" >
</div>
</body>

13 个解决方案

#1


服务器端也要验证过。。客户端的js验证是可以绕过的。。

正则判断下内容
<script type="text/javascript">
    function checkData() {
        var t = document.getElementById('name');
        if (/['")-><&\\\/\.]/.test(t.value)) {
            alert('包含特殊字符,不允许提交!');
        }
    }
</script>
<div>
    <textarea  id="name"></textarea>
    <input type="button" value="提交" id="commit" onclick="checkData()" >
</div>


不过提交这种字符串无所谓吧。。

#2


引用 1 楼 showbo 的回复:
服务器端也要验证过。。客户端的js验证是可以绕过的。。

正则判断下内容
<script type="text/javascript">
    function checkData() {
        var t = document.getElementById('name');
        if (/['")-><&\\\/\.]/.test(t.value)) {
            alert('包含特殊字符,不允许提交!');
        }
    }
</script>
<div>
    <textarea  id="name"></textarea>
    <input type="button" value="提交" id="commit" onclick="checkData()" >
</div>


不过提交这种字符串无所谓吧。。



你好 您回答的 很好  不过  这边的要求是 比如:textarta里面 是从其他处赋值过来的一段 字符串  :     这是一本非常好的书 <javascript高级篇>,\n

#3


引用 2 楼 BaLiJieTouDeLiMing 的回复:
Quote: 引用 1 楼 showbo 的回复:

服务器端也要验证过。。客户端的js验证是可以绕过的。。

正则判断下内容
<script type="text/javascript">
    function checkData() {
        var t = document.getElementById('name');
        if (/['")-><&\\\/\.]/.test(t.value)) {
            alert('包含特殊字符,不允许提交!');
        }
    }
</script>
<div>
    <textarea  id="name"></textarea>
    <input type="button" value="提交" id="commit" onclick="checkData()" >
</div>


不过提交这种字符串无所谓吧。。



你好 您回答的 很好  不过  这边的要求是 比如:textarta里面 是从其他处赋值过来的一段 字符串  :     这是一本非常好的书 <javascript高级篇>,\n



刚没写完 就提交了  补写:
 提交的时候 是需要把  <>这些符号带上的  比如一本书的名字  必须得用到那些字符  可是 到了  安全同事那块 就会有拦截·····

#4


你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

#5


那事你同事的事了,不允许提交这些字符,你又需要提交这些字符不是矛盾了

将<>替换为对应的实体字符&lt;和&gt;后在提交

#6


引用 4 楼 showbo 的回复:
你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

嗯  提示是为了让他们更改掉对吧 , 可是提交的这个内容所包含的特殊字体是需要提交上去的  怎么进行转义一下    才能让 安全的同事那块  通过···· 不提示拦截··

#7


引用 5 楼 showbo 的回复:
那事你同事的事了,不允许提交这些字符,你又需要提交这些字符不是矛盾了

将<>替换为对应的实体字符&lt;和&gt;后在提交



对 我当时想的就是 将那些特殊字符 怎么才能用一个方法替换成对应的 比如:<> &lt;和&gt;

#8


引用 6 楼 BaLiJieTouDeLiMing 的回复:
Quote: 引用 4 楼 showbo 的回复:

你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

嗯  提示是为了让他们更改掉对吧 , 可是提交的这个内容所包含的特殊字体是需要提交上去的  怎么进行转义一下    才能让 安全的同事那块  通过···· 不提示拦截··

替换为实体也不行。。&就直接干掉多有实体内容了。。至少要放过&这个字符,然后替换为实体 
&apos;  '
&quot;   "
&lt;         <
&gt;        >

其他的实体不常用,不知道什么。。 防止js注入 js对一些特殊字符进行转义 大牛进~

#9


引用 8 楼 showbo 的回复:
Quote: 引用 6 楼 BaLiJieTouDeLiMing 的回复:

Quote: 引用 4 楼 showbo 的回复:

你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

嗯  提示是为了让他们更改掉对吧 , 可是提交的这个内容所包含的特殊字体是需要提交上去的  怎么进行转义一下    才能让 安全的同事那块  通过···· 不提示拦截··

替换为实体也不行。。&就直接干掉多有实体内容了。。至少要放过&这个字符,然后替换为实体 
&apos;  '
&quot;   "
&lt;         <
&gt;        >

其他的实体不常用,不知道什么。。 防止js注入 js对一些特殊字符进行转义 大牛进~


en 有些事不怎么常用 到时也会用到  &这个基本上没怎么用到过  可以考虑其他方法 单独搞一下    能否把常用的这些 写个公用的方法 把内容当参数   防止js注入 js对一些特殊字符进行转义 大牛进~

#10


    function checkData(v) {
        var  entry = { "'": "&apos;", '"': '&quot;', '<': '&lt;', '>': '&gt;' };
        v = v.replace(/(['")-><&\\\/\.])/g, function ($0) { return entry[$0] || $0; });
        return v;
    }

    var v = checkData('<书名啊>\'"');
   document.write(v)

#11


引用 10 楼 showbo 的回复:
    function checkData(v) {
        var  entry = { "'": "&apos;", '"': '&quot;', '<': '&lt;', '>': '&gt;' };
        v = v.replace(/(['")-><&\\\/\.])/g, function ($0) { return entry[$0] || $0; });
        return v;
    }

    var v = checkData('<书名啊>\'"');
   document.write(v)

谢谢你 大神···   先这么着吧   

#12


<script type="text/javascript">
    for(var i=0;i<10;i++){
        console.log("测试"+i)
    }
</script>

#13


#1


服务器端也要验证过。。客户端的js验证是可以绕过的。。

正则判断下内容
<script type="text/javascript">
    function checkData() {
        var t = document.getElementById('name');
        if (/['")-><&\\\/\.]/.test(t.value)) {
            alert('包含特殊字符,不允许提交!');
        }
    }
</script>
<div>
    <textarea  id="name"></textarea>
    <input type="button" value="提交" id="commit" onclick="checkData()" >
</div>


不过提交这种字符串无所谓吧。。

#2


引用 1 楼 showbo 的回复:
服务器端也要验证过。。客户端的js验证是可以绕过的。。

正则判断下内容
<script type="text/javascript">
    function checkData() {
        var t = document.getElementById('name');
        if (/['")-><&\\\/\.]/.test(t.value)) {
            alert('包含特殊字符,不允许提交!');
        }
    }
</script>
<div>
    <textarea  id="name"></textarea>
    <input type="button" value="提交" id="commit" onclick="checkData()" >
</div>


不过提交这种字符串无所谓吧。。



你好 您回答的 很好  不过  这边的要求是 比如:textarta里面 是从其他处赋值过来的一段 字符串  :     这是一本非常好的书 <javascript高级篇>,\n

#3


引用 2 楼 BaLiJieTouDeLiMing 的回复:
Quote: 引用 1 楼 showbo 的回复:

服务器端也要验证过。。客户端的js验证是可以绕过的。。

正则判断下内容
<script type="text/javascript">
    function checkData() {
        var t = document.getElementById('name');
        if (/['")-><&\\\/\.]/.test(t.value)) {
            alert('包含特殊字符,不允许提交!');
        }
    }
</script>
<div>
    <textarea  id="name"></textarea>
    <input type="button" value="提交" id="commit" onclick="checkData()" >
</div>


不过提交这种字符串无所谓吧。。



你好 您回答的 很好  不过  这边的要求是 比如:textarta里面 是从其他处赋值过来的一段 字符串  :     这是一本非常好的书 <javascript高级篇>,\n



刚没写完 就提交了  补写:
 提交的时候 是需要把  <>这些符号带上的  比如一本书的名字  必须得用到那些字符  可是 到了  安全同事那块 就会有拦截·····

#4


你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

#5


那事你同事的事了,不允许提交这些字符,你又需要提交这些字符不是矛盾了

将<>替换为对应的实体字符&lt;和&gt;后在提交

#6


引用 4 楼 showbo 的回复:
你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

嗯  提示是为了让他们更改掉对吧 , 可是提交的这个内容所包含的特殊字体是需要提交上去的  怎么进行转义一下    才能让 安全的同事那块  通过···· 不提示拦截··

#7


引用 5 楼 showbo 的回复:
那事你同事的事了,不允许提交这些字符,你又需要提交这些字符不是矛盾了

将<>替换为对应的实体字符&lt;和&gt;后在提交



对 我当时想的就是 将那些特殊字符 怎么才能用一个方法替换成对应的 比如:<> &lt;和&gt;

#8


引用 6 楼 BaLiJieTouDeLiMing 的回复:
Quote: 引用 4 楼 showbo 的回复:

你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

嗯  提示是为了让他们更改掉对吧 , 可是提交的这个内容所包含的特殊字体是需要提交上去的  怎么进行转义一下    才能让 安全的同事那块  通过···· 不提示拦截··

替换为实体也不行。。&就直接干掉多有实体内容了。。至少要放过&这个字符,然后替换为实体 
&apos;  '
&quot;   "
&lt;         <
&gt;        >

其他的实体不常用,不知道什么。。 防止js注入 js对一些特殊字符进行转义 大牛进~

#9


引用 8 楼 showbo 的回复:
Quote: 引用 6 楼 BaLiJieTouDeLiMing 的回复:

Quote: 引用 4 楼 showbo 的回复:

你总要提交吧。。提交的时候提示就行了。。
或者给textarea增加onblur事件执行checkData事件也行

嗯  提示是为了让他们更改掉对吧 , 可是提交的这个内容所包含的特殊字体是需要提交上去的  怎么进行转义一下    才能让 安全的同事那块  通过···· 不提示拦截··

替换为实体也不行。。&就直接干掉多有实体内容了。。至少要放过&这个字符,然后替换为实体 
&apos;  '
&quot;   "
&lt;         <
&gt;        >

其他的实体不常用,不知道什么。。 防止js注入 js对一些特殊字符进行转义 大牛进~


en 有些事不怎么常用 到时也会用到  &这个基本上没怎么用到过  可以考虑其他方法 单独搞一下    能否把常用的这些 写个公用的方法 把内容当参数   防止js注入 js对一些特殊字符进行转义 大牛进~

#10


    function checkData(v) {
        var  entry = { "'": "&apos;", '"': '&quot;', '<': '&lt;', '>': '&gt;' };
        v = v.replace(/(['")-><&\\\/\.])/g, function ($0) { return entry[$0] || $0; });
        return v;
    }

    var v = checkData('<书名啊>\'"');
   document.write(v)

#11


引用 10 楼 showbo 的回复:
    function checkData(v) {
        var  entry = { "'": "&apos;", '"': '&quot;', '<': '&lt;', '>': '&gt;' };
        v = v.replace(/(['")-><&\\\/\.])/g, function ($0) { return entry[$0] || $0; });
        return v;
    }

    var v = checkData('<书名啊>\'"');
   document.write(v)

谢谢你 大神···   先这么着吧   

#12


<script type="text/javascript">
    for(var i=0;i<10;i++){
        console.log("测试"+i)
    }
</script>

#13