몇 시간의 연구 끝에 마침내 origin-clean
FLAG가 설정되어 있어도 (XSS를 방지하기 위해) 요소의 스크린 샷을 찍을 수있는 솔루션을 찾았습니다 . 스크린 샷을 얻는 범용 함수를 작성했습니다. 또한 필요한 것은 html2canvas 라이브러리 ( https://html2canvas.hertzen.com/ ) 뿐입니다 .
예:
getScreenshotOfElement($("div#toBeCaptured").get(0), 0, 0, 100, 100, function(data) {
// in the data variable there is the base64 image
// exmaple for displaying the image in an <img>
$("img#captured").attr("src", "data:image/png;base64,"+data);
});
이미지의 크기가 크면 명심 console.log()
하고 alert()
출력을 생성하지 않습니다.
함수:
function getScreenshotOfElement(element, posX, posY, width, height, callback) {
html2canvas(element, {
onrendered: function (canvas) {
var context = canvas.getContext('2d');
var imageData = context.getImageData(posX, posY, width, height).data;
var outputCanvas = document.createElement('canvas');
var outputContext = outputCanvas.getContext('2d');
outputCanvas.width = width;
outputCanvas.height = height;
var idata = outputContext.createImageData(width, height);
idata.data.set(imageData);
outputContext.putImageData(idata, 0, 0);
callback(outputCanvas.toDataURL().replace("data:image/png;base64,", ""));
},
width: width,
height: height,
useCORS: true,
taintTest: false,
allowTaint: false
});
}