ADsafe是一种用于Web浏览器的JavaScript子集,旨在提供更高的安全性。然而,最近发现ADsafe并没有完全拦截广告,这引起了人们的关注和质疑。本文将深入探讨ADsafe的设计及其限制,并讨论为什么ADsafe未能完全拦截广告的原因。
ADsafe是什么?
ADsafe是由Douglas Crockford于2008年开发的JavaScript子集。它是为了提高JavaScript代码的安全性而设计的。
ADsafe的设计原则
ADsafe的设计基于几个原则:
JavaScript的语言特性很危险,并具有很多巧妙的攻击手段
JavaScript开发者经常犯错误,这些错误可能会导致安全漏洞
对于某些不需要使用JavaScript的网站,禁用JavaScript可以提高安全性
ADsafe如何实现安全?
ADsafe实现安全的主要方式是用一组强制规则来限制JavaScript的语言特性。这些规则包括:
不允许使用eval()
不允许使用with语句
不允许使用Function()构造函数
不允许使用this、prototype和arguments
只允许使用安全类型的对象、属性和方法
为什么ADsafe不能完全拦截广告?
尽管ADsafe的规则非常严格,但它并不能完全拦截广告。这是因为广告商使用各种技巧来绕过ADsafe的规则。
技巧1:通过字符串拼接来绕过ADsafe的规则
ADsafe禁止使用Function()构造函数,但广告商可以使用字符串拼接来动态创建函数,并在执行时将其转换为JavaScript代码。这使得广告内容可以通过字符串拼接来绕过ADsafe的规则。
技巧2:通过JSONP来绕过ADsafe的规则
ADsafe不能禁止跨域访问,因为跨域访问是Web应用程序的一个重要功能。广告商可以通过JSONP技术来绕过ADsafe的规则。JSONP是一种通过动态创建