我理解最好的方式根本就没有外部JS,但唉,这是不可能的。
场合
网站的所有者希望(没有ifs / ands / orButs)由提供赌博广告的公司获得报酬。该公司声明,为了让他们提供所述广告,该网站的所有者必须向该网站添加 JS 代码。所说的JS代码是几行,但实际上它创建了一个标记<script>
并加载了一个位于宣传公司服务器中的缩小的外部JS文件。他们会做不同类型的广告(弹出窗口等)和其他一些需要代码的东西。
没有讨论不这个,我想知道是否有任何类型的安全层我可以添加以保护网站查看者。我知道他们仍处于危险之中,但我无能为力。
要做的事
(function(){})()
。我还能做什么?或者我只是在欺骗自己,以为我可以提供一些微弱的保护?
答案 0 :(得分:1)
有几种方法可以让您使用外部脚本保护页面。 首先创建内容安全策略。这基本上告诉浏览器它可以加载不同类型的内容,如果第三方开始从新来源加载内容而不告诉你他们将被阻止。
其次是script-src标签。这允许您指定脚本标记的哈希值,如果更改,浏览器将不会运行它。
关于这些以及更多关于Troy Hunt博客的更多信息,特别是此页https://www.troyhunt.com/locking-down-your-website-scripts-with-csp-hashes-nonces-and-report-uri/
答案 1 :(得分:0)
使用支持版本的CDN(几乎每个现代CDN都支持该版本),因此您不需要自己托管这些JS文件,并且您不必担心这一事实文件可能会改变。
仅在登录页面上运行您的JS
对于广告,请使用iframe
元素,因此广告的JS代码无法访问外部信息
在脚本标记上使用子资源完整性(SRI)
jQuery示例
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
正如Karl Graham所说,在HTTP标头中使用Content Security Policy (CSP),因此内容无法泄露。
确保使用SSL证书(HTTPS),并在执行AJAX / Fetch请求时对内容进行加密,因此即使外部脚本侦听FetchEvents
,它也无法使用阅读数据。
我几乎可以肯定,如果您遵循这些规则,您的外部脚本将无法获取您的表单内容。