使用 '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 和代码安全方面的新手,所以任何信息都会有所帮助。
textContent
和 value
都是 return 一个字符串。
value
仅适用于表单控件和 return 它们的当前值。
textContent
适用于任何元素,return 开始标记和结束标记之间的文本。
输入没有任何文本内容(或与此相关的结束标记),因此 textContent
在您的上下文中没有多大用处。
我想将电子邮件字符串传递给 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 和代码安全方面的新手,所以任何信息都会有所帮助。
textContent
和 value
都是 return 一个字符串。
value
仅适用于表单控件和 return 它们的当前值。
textContent
适用于任何元素,return 开始标记和结束标记之间的文本。
输入没有任何文本内容(或与此相关的结束标记),因此 textContent
在您的上下文中没有多大用处。