防止val注入代码

时间:2014-08-10 19:20:30

标签: jquery input code-injection

我使用jQuery将变量的值设置为输入框的值,但看起来.val()非常容易受到注入攻击。我想在将它们保存到变量之前转义输入框中写入的字符串,然后将转义的字符串输出到同一页面上其他位置的地方。

在相关的说明中,.text()似乎无法检索输入框的值。它是在页面上放置文本后手动编辑输入框中的文本。

简单示例代码:

var $variable = $('#input').val();

什么是安全检索输入框值的最佳方式?

2 个答案:

答案 0 :(得分:1)

text()不应该检索输入的值。它用于检索元素的内部文本

val()是你的朋友;根本不确定为什么你认为它容易受到注射。它只是收集价值 - 作为纯文本,没有解释 - 已经输入。

无论如何,稍后以一种逃避任何可能找到的HTML的方式输出它 - 通过使用text()将其呈现为元素的内容,或者document.createTextNode()来创建安全文本附加到元素。

答案 1 :(得分:0)

  

看起来像.val()非常容易受到注入

它不容易受到注射。其中的任何数据都不会被JS引擎eval编辑或解析为HTML。

您稍后对数据执行的操作可能会引入漏洞,但您需要处理它们。

  

我希望在将它们保存到变量

之前转义输入框中写入的字符串

别。逃跑应该及时完成。即尽可能接近脆弱点。这是因为您用于转义的方法取决于您要逃避的漏洞点。

  

然后将转义后的字符串输出到同一页面上的其他位置。

使用text()(或val()元素上的<output>输出字符串。这将使用不易被解析为JavaScript或HTML的方法。