Javascript 转义所有输入文本类型上的所有特殊字符以防止XSS

Javascript 转义所有输入文本类型上的所有特殊字符以防止XSS,javascript,jquery,plsql,special-characters,xss,Javascript,Jquery,Plsql,Special Characters,Xss,使用jQuery,在我的整个网站上,根据呈现给用户的页面,我希望找到所有输入文本项选择器,并转义所有特殊字符,以防止跨站点脚本编写 基本上,在加载页面或提交时,查找“文本”的所有输入类型,即: 使用jQuery,查找并替换所有特殊字符,如: </option<script>alert("XSS")</script> 您不能依靠客户端脚本来阻止跨站点脚本从最初存在于DOM上的数据执行 您无法保证可疑代码不会在您的之前执行,从而导致其无效。这应该在服务器端完成,但

使用jQuery,在我的整个网站上,根据呈现给用户的页面,我希望找到所有输入文本项选择器,并转义所有特殊字符,以防止跨站点脚本编写

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


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

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

您不能依靠客户端脚本来阻止跨站点脚本从最初存在于DOM上的数据执行

您无法保证可疑代码不会在您的之前执行,从而导致其无效。这应该在服务器端完成,但您还没有指定语言,因此我无法在这方面提供帮助

如果您通过AJAX引入数据并将其附加到DOM,则可以这样做,但这里的情况似乎并非如此。如果是AJAX,您不必担心,除非您使用的是
eval
或类似工具

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

$('input').val("<script>alert('derp');</script>");
$('input').val(“警报('derp');”;
您将不会收到警报,并且数据会很好地附加到屏幕右上角的搜索元素中。为了好玩,你也可以试试纯JS:

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

此外,如果出于某种原因在DOM上使用未初始化的数据创建元素,则需要确保您不是简单地连接字符串来创建它们,而是通过JS正确地创建节点(也称为无jQuery
.html()
).

您不能依靠客户端脚本来阻止跨站点脚本从最初存在于DOM上的数据执行

您无法保证可疑代码不会在您的之前执行,从而导致其无效。这应该在服务器端完成,但您还没有指定语言,因此我无法在这方面提供帮助

如果您通过AJAX引入数据并将其附加到DOM,则可以这样做,但这里的情况似乎并非如此。如果是AJAX,您不必担心,除非您使用的是
eval
或类似工具

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

$('input').val("<script>alert('derp');</script>");
$('input').val(“警报('derp');”;
您将不会收到警报,并且数据会很好地附加到屏幕右上角的搜索元素中。为了好玩,你也可以试试纯JS:

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

此外,如果出于某种原因在DOM上使用未初始化的数据创建元素,则需要确保您不是简单地连接字符串来创建它们,而是通过JS正确地创建节点(也称为无jQuery
.html()
).

您不能依赖客户端代码进行清理。我的用词肯定不好。EditedLanguage实际上是OraclePL/SQL。不幸的是,我不确定如何在PL/SQL上帮助生成网站。您应该使用这些信息更新您的问题和标签,并提供一个用于生成输入字段的服务器端代码示例-希望其他人能够提供帮助。没有安全的方法用JavaScript预处理DOM。大家好,Dave,感谢你们的帮助。只是想让您知道,在存储到Oracle DB之前,我需要将以下内容应用于站点中的所有输入字段,即:htf.escape_sc(),在服务器端。您不能依赖客户端代码进行清理。我的用词选择肯定不正确。EditedLanguage实际上是OraclePL/SQL。不幸的是,我不确定如何在PL/SQL上帮助生成网站。您应该使用这些信息更新您的问题和标签,并提供一个用于生成输入字段的服务器端代码示例-希望其他人能够提供帮助。没有安全的方法用JavaScript预处理DOM。大家好,Dave,感谢你们的帮助。只是想让您知道,在存储到Oracle DB之前,我需要将以下内容应用于站点中的所有输入字段,即:服务器端的htf.escape_sc()。