我一直在努力解决最近出现的与浏览器安全相关的问题:我想发布一个使用HTML5的capture = camera属性的移动网站。
然而,这些药物中的一些可能会有患者姓名 - 使其受HIPAA保护。当然,我们会通过https将图像数据发送到我们的服务器,并在服务器端正确加密它们。
但是,我们还希望确保从拍摄照片的移动设备上安全删除图像。值得庆幸的是 - 至少 - 以这种方式上传的图像不会添加到设备的“相机胶卷”专辑中。
完整的代码 - 就像现在一样 - 相对简单:
HTML:
<input type="file" capture="camera" onchange="resizeAndUpload(this.files)">
JAVASCRIPT:
function resizeAndUpload(files)
{
var img = new Image
img.onload = function()
{
URL.revokeObjectURL(img.src)
//Use HTML5's Canvas to Resize Picture
var canvas = document.createElement('canvas')
canvas.width = 600
canvas.height = 800
var context = canvas.getContext('2d')
context.drawImage(img, canvas.width, canvas.height)
ajaxUpload.post('https://oursite', canvas.toDataURL('image/jpeg'))
}
img.src = URL.createObjectURL(files[0])
}
正如您现在所看到的,我正在使用revokeObjectUrl,但我想知道原始文件(例如,文件[0])或屏幕外的Canvas是否仍然存在于内存中,持续多长时间以及如何一旦ajax上传完成,我就安全地摆脱它们。
我意识到这些答案需要对(移动?)浏览器有相当深刻的理解。我怀疑答案将取决于浏览器 - 因为安全规范在这些问题上似乎很安静:
http://www.w3.org/TR/html-media-capture/#security
http://www.w3.org/TR/2012/WD-FileAPI-20121025/#security-discussion
理想情况下,会有一种跨浏览器的方法来清除设备上的这些图像的残余物(file-system-api的删除?)。但是我计划将这些设备借给拍照的人,所以如果需要,我可以强制执行特定的操作系统和/或浏览器。
由于 亚当