script标签转义

2018-12-07  本文已影响15人  Trytodo_zbs

前言

前端页面文本输入过程中输入<script></script>标签
一般情况下是没有什么问题的,但是也有几种情况会出现问题

1.输入框的文本被取值然后以拼装或者innerHTML的形式插入到界面

这种情况script标签里的代码会执行,造成的后果未知(不过F12之后console面板本来就可以执行js,貌似防不住)
如果script里面是js代码,那么界面上就不会显示(面对真的要填写这个文本内容的,不做处理可能根本就不显示)

2.数据传到后端,在返回前端如果返回的方式不对,容易造成页面出现代码,或者干脆导致页面报错打不开

这种情况我只在页面使用framemarker语法时看见过
如果不注意根据情况使用?html ?js_string去转换
html代码部分不转换会使界面出现代码,js部分不转换会使页面报错严重的额能白屏

特定的地方使用对<script></script>进行处理可以避免这些问题
var txt="<script>alert('1')</script>";
txt=txt.replace(/<script|<\/script/ig,function(c){
    return "&lt;"+c.substring(1);
});

//返回结果
"&lt;script>alert('1')&lt;/script>"

将script标签中的<转换成&lt;这也是大多数框架的处理方式
部分老式的jquery版的ui框架比较容易出现这个问题,该方法在easyui上测试表现正常,其他更多的地方待测

上一篇下一篇

猜你喜欢

热点阅读