我们说我的html中有一个<script>
标记,它会从它的源代码中加载一些脚本。有可能以某种方式将此源作为字符串读取(不直接对src执行相同的请求)吗?关键是要弄清楚是否存在一些需要解决的漏洞,例如脚本源可以是3d party API,浏览器很乐意发送身份验证cookie。
我认为这是不可能的,必须严格禁止,否则它可以很容易地用于CSRF攻击以窃取敏感数据,但只是想确定。
P.S。同样适用于例如<img>
代码等。
答案 0 :(得分:2)
这可以通过XMLHttpRequest
:
window.addEventListener('DOMContentLoaded', function() {
var xhr = new XMLHttpRequest();
var url = 'http://localhost:8081/myscript.js';
xhr.open('GET', url);
xhr.onreadystatechange = function(response) {
if(xhr.readyState === 4 && xhr.status === 200) {
console.log(response.currentTarget.responseText);
}
};
xhr.send();
});
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
答案 1 :(得分:1)
您通常无法通过浏览器执行此操作。同源策略阻止浏览器从不同的源(域)读取内容(脚本或img)的内容。
即使在您可以读取源代码(使用CORS)的情况下,在浏览器已经解析并执行脚本之后,也无法执行此操作。如果这就是您所追求的,那么您将使用子资源完整性将允许的脚本列入白名单。