在阅读JavaScript中的navigator()对象时,我遇到了taintEnabled()函数说明,与类似的taint()
和untaint()
函数一样,指的是“数据污染” ”
在网上搜索和StackOverflow显示一些可能的参考Perl语言,但没有关于JavaScript。我想知道,什么是数据污染以及如何使用这些功能?
答案 0 :(得分:11)
数据污染(或Taint Checking)是一种语言功能,其中用户输入数据被标记为污染,这是一个传播到从此输入派生的所有数据的标志。因此,代码可以实现运行时断言,以确保不使用受污染的数据调用安全关键代码(即防止SQLi,XSS类型的攻击)。
虽然Netscape在v3和v4的浏览器中实现了它,但对它的支持却从未在其他地方实现过,所以@trejder绝对是正确的,它应该在JavaScript中避免。
答案 1 :(得分:1)
如上所述,互联网上关于数据污染的来源并不多,因为它似乎是一个被遗忘,弃用的技术和主题。但我在findmeat.org上发现了一个有趣的读物。对于Navigator.taintEnabled()
方法,它说(引用了各个部分,缩短了一些文字):
数据污染支持是将数据发送回服务器的短暂方式。安全隐患变得不可行,整个数据污染的想法已被弃用。该功能已在JavaScript 1.2版中删除。仅支持此方法以防止脚本崩溃。此功能已被高度弃用,您可能希望它在将来导致运行时异常。您应该尝试删除它以防止将来出现运行时错误。
现在似乎很少有浏览器支持这个功能(和类似的,提到的)并且它不应该在任何情况下使用。即使浏览器实现了这一点,它也应该始终为此方法返回值false。
答案 2 :(得分:1)
缺乏有关此概念的信息会使新学员付出更多努力。这是我的发现,以帮助他们。
当应该启用污染时,如果没有,则需要考虑以下两点:
有用的资源是http://www.aisystech.com/resources/advtopic.htm#1009533