在所有输入类型的TEXT上转义所有特殊字符以防止XSS

时间:2016-10-28 04:02:01

标签: javascript jquery plsql special-characters xss

使用jQuery,在我的网站中根据向用户显示的页面,我想找到所有输入文本项选择器并转义所有特殊字符以防止跨站点脚本。

基本上在加载页面或提交时,查找" text"的所有输入类型,即:

<input type="text" class="datepicker hasDatepicker form-control" id="START_DATE" name="s_date" maxlength="4000" size="30" value="" autocomplete="off">

并使用jQuery查找并替换所有特殊字符,如:

</option<script>alert("XSS")</script>

停止XSS。

1 个答案:

答案 0 :(得分:4)

您不能依赖客户端脚本来防止最初存在于DOM上的数据的跨站点脚本。

您无法保证可疑代码不会在您之前被执行,从而导致其无效。这应该是在服务器端完成的,但是您还没有表示语言,所以我无法帮助那里。

如果您通过AJAX引入数据并附加到DOM,则可以执行此操作,但这似乎不是这种情况。如果是AJAX,除非您使用eval或类似内容,否则无需担心。

要提供一个简单示例,请在此窗口中打开JS控制台并输入以下内容

$('input').val("<script>alert('derp');</script>");

您无法收到提醒,并且数据很好地附加到屏幕右上角的搜索元素中。只是为了踢,你也可以尝试纯JS:

document.getElementsByTagName('input')[0].value = "<script>alert('test');</script>";

此外,如果由于某种原因在DOM上使用未经过数据处理的数据创建元素 - 您需要确保不是简单地连接字符串来制作它们,而是通过JS正确地创建节点(也就是说没有jQuery { {1}})。