关于图片上传安全的问题
一般我只检查后缀名,
比如上传abc.jpg,最后放在/xxx/xxx.jpg
但是今天看见一篇文章
原理是一段代码制作成JPG图片,然后上传。
<img src="xxx.jpg">这时就执行代码?
我百度了很久找到的都是10年前的资料,而且好像这个东西跟ASP相关的?
我想问这个PHP是否也有这个漏洞?
文件上传时只检查后缀是否安全?
[解决办法]
if (preg_match('/<\?php
[解决办法]
eval
[解决办法]
POST
[解决办法]
base64_decode
[解决办法]
base64_encode/i', @file_get_contents($_FILES['uploadfile']['tmp_name']), $m_err)) {
die('提示!禁止提交。该图片含有禁止的代码'.str_replace('?', '\?', $m_err[0]).'。');
}
[解决办法]
1.你把所有存放图片的目录权限都设为“可读可写不可执行”,包括临时存放的目录也是
2.检查是否真实图片,jpg等要切尾,切尾就是了解图片格式,把图片尾段“额外”的字节扔掉,搜索一下能找到相关文章
基本做好这两点就相对安全了,尤其第一点相当重要