使用'value'或'textContent'属性更安全吗?

时间:2018-10-15 09:04:21

标签: javascript xss

我想将电子邮件字符串传递给HIBP API。为了确保我方面的尽职调查(我喜欢Troy Hunt,并且不想给他带来不必要的问题),我想尽可能地彻底清除用户输入。

通过一些研究,我遇到了两种获取用户输入并将其传递到API的方法:textContentvalue

相关代码

var account = document.getElementById('input')

....

fetch('https://haveibeenpwned.com/api/v2/breachedaccount/' + account.value, {
          timeout: 1500,
          userAgent: 'test'
        })
        .then(doStuff)

此代码使用.value属性,据我了解,该属性将字符串传递给获取请求。我想知道this guy所提到的仅通过...文本内容...的textContent是否更好?也许坏家伙可以用String做更多的事情?

因此,使用第二种方法,代码将如下所示。

var account = document.getElementById('input')
var email = account.textContent;

...

fetch('https://haveibeenpwned.com/api/v2/breachedaccount/' + email, {
              timeout: 1500,
              userAgent: 'test'
            })
            .then(doStuff)

注意:我一般都不熟悉JS和代码安全性,因此任何信息都对您有所帮助。

1 个答案:

答案 0 :(得分:0)

textContentvalue都返回一个字符串。

value仅适用于表单控件并返回其当前值。

textContent适用于任何元素,并返回开始标记和结束标记之间的文本。

输入没有任何文本内容(或与此相关的结束标签),因此textContent在您的上下文中不是很有用。