使用 javascript 的图像子资源完整性
Sub Resource Integrity for images using javascript
我最近了解了 Sub Resource Integrity,它可以防止执行更改的 JS 和 CSS。由于当前的实现缺乏对图像的支持,我尝试用我自己的实现进行试验。
<img data-src="http://localhost:8888/4.jpg" alt="" data-hash="" class="image">
<img data-src="http://localhost:8888/2.jpg" alt="" data-hash="" class="image">
<img data-src="http://localhost:8888/3.jpg" alt="" data-hash="" class="image">
<script src="qwest.js"></script>
<script src="md5.min.js"></script>
<script>
var images = document.getElementsByClassName("image");
for( var i = 0, len = images.length; i < len; i++){
popHash(images[i]);
}
function popHash(image) {
qwest.get(image.dataset.src, {}, {responseType:"blob"})
.then(function (xhr, response) {
var src = window.URL.createObjectURL(response);
image.src = src;
image.dataset.hash = md5(src);
console.log(image.dataset.hash);
/* code to check the equality of hashes here */
})
}
</script>
问题是每次我得到不同的 MD5 散列值。请帮我找出我做错了什么。
我正在使用 JavaScript-MD5 (https://github.com/blueimp/JavaScript-MD5) for getting MD5 hash and Qwest.js (https://github.com/pyrsmk/qwest) 来获取图像
稍作改动,我就能得到正确的结果。我使用 arrayBuffer 而不是 blob 和 sha-256 哈希。我为此制作了一个小型图书馆。
我最近了解了 Sub Resource Integrity,它可以防止执行更改的 JS 和 CSS。由于当前的实现缺乏对图像的支持,我尝试用我自己的实现进行试验。
<img data-src="http://localhost:8888/4.jpg" alt="" data-hash="" class="image">
<img data-src="http://localhost:8888/2.jpg" alt="" data-hash="" class="image">
<img data-src="http://localhost:8888/3.jpg" alt="" data-hash="" class="image">
<script src="qwest.js"></script>
<script src="md5.min.js"></script>
<script>
var images = document.getElementsByClassName("image");
for( var i = 0, len = images.length; i < len; i++){
popHash(images[i]);
}
function popHash(image) {
qwest.get(image.dataset.src, {}, {responseType:"blob"})
.then(function (xhr, response) {
var src = window.URL.createObjectURL(response);
image.src = src;
image.dataset.hash = md5(src);
console.log(image.dataset.hash);
/* code to check the equality of hashes here */
})
}
</script>
问题是每次我得到不同的 MD5 散列值。请帮我找出我做错了什么。
我正在使用 JavaScript-MD5 (https://github.com/blueimp/JavaScript-MD5) for getting MD5 hash and Qwest.js (https://github.com/pyrsmk/qwest) 来获取图像
稍作改动,我就能得到正确的结果。我使用 arrayBuffer 而不是 blob 和 sha-256 哈希。我为此制作了一个小型图书馆。