我使用jQuery将变量的值设置为输入框的值,但看起来.val()非常容易受到注入攻击。我想在将它们保存到变量之前转义输入框中写入的字符串,然后将转义的字符串输出到同一页面上其他位置的地方。
在相关的说明中,.text()似乎无法检索输入框的值。它是在页面上放置文本后手动编辑输入框中的文本。
简单示例代码:
var $variable = $('#input').val();
什么是安全检索输入框值的最佳方式?
答案 0 :(得分:1)
text()
不应该检索输入的值。它用于检索元素的内部文本。
val()
是你的朋友;根本不确定为什么你认为它容易受到注射。它只是收集价值 - 作为纯文本,没有解释 - 已经输入。
无论如何,稍后以一种逃避任何可能找到的HTML的方式输出它 - 通过使用text()
将其呈现为元素的内容,或者document.createTextNode()
来创建安全文本附加到元素。
答案 1 :(得分:0)
看起来像.val()非常容易受到注入
它不容易受到注射。其中的任何数据都不会被JS引擎eval
编辑或解析为HTML。
您稍后对数据执行的操作可能会引入漏洞,但您需要处理它们。
我希望在将它们保存到变量
之前转义输入框中写入的字符串
别。逃跑应该及时完成。即尽可能接近脆弱点。这是因为您用于转义的方法取决于您要逃避的漏洞点。
然后将转义后的字符串输出到同一页面上的其他位置。
使用text()
(或val()
元素上的<output>
)输出字符串。这将使用不易被解析为JavaScript或HTML的方法。