加载后可以读取脚本或图像标记的内容吗?

时间:2018-04-26 18:43:57

标签: javascript html security

我们说我的html中有一个<script>标记,它会从它的源代码中加载一些脚本。有可能以某种方式将此源作为字符串读取(不直接对src执行相同的请求)吗?关键是要弄清楚是否存在一些需要解决的漏洞,例如脚本源可以是3d party API,浏览器很乐意发送身份验证cookie。

我认为这是不可能的,必须严格禁止,否则它可以很容易地用于CSRF攻击以窃取敏感数据,但只是想确定。

P.S。同样适用于例如<img>代码等。

2 个答案:

答案 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)的情况下,在浏览器已经解析并执行脚本之后,也无法执行此操作。如果这就是您所追求的,那么您将使用子资源完整性将允许的脚本列入白名单。