使用 'value' 还是 'textContent' 属性 更安全?

Is it safer to use the 'value' or the 'textContent' property?

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

通过一些研究,我发现了两种获取用户输入并将其传递给 API 的方法:textContent and value

相关代码

var account = document.getElementById('input')

....

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

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

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

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

...

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

注意:我是 JS 和代码安全方面的新手,所以任何信息都会有所帮助。

textContentvalue 都是 return 一个字符串。

value 仅适用于表单控件和 return 它们的当前值。

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

输入没有任何文本内容(或与此相关的结束标记),因此 textContent 在您的上下文中没有多大用处。