昨天不是刚把服务器给部署好了嘛,其中针对sql注入,xss以及文件上传做了一定程度的防范,可是不知道防护效果如何,今天就花了几个小时对文件上传做了些简单的测试。
简单说明
首先来说下我后端针对文件上传做的基本防护吧。
第一就是针对文件名进行处理,在后端进行文件后缀名截取,只允许png,jpg,jpeg格式的图片上传,对不满足条件的文件进行删除并在前端输出相关提示。当然这个工作其实在前端也可以做。
第二就是用python的imghdr.what()函数进行文件的头文件识别,发现不是jpeg以及png格式的文件进行删除并输出相关提示。嗯,检查头文件的时候,jpeg和jpg是相同的头文件。
第三是对图片里面的内容进行识别。因为我服务器要求上传的是QR码,所以就用pyzbar库的decode函数对QR码进行解码。解码成功说明是QR码,进行下一步,解码不成功说明不是收款码进行删除处理并输出相关提示。
第四是对QR码里面的内容进行识别。因为我要求上传的是支付宝收款码,是QR码的一种。对支付宝收款码里面包含的收款地址进行正则匹配,不符合相关格式就进行删除处理,符合就进行下一步。
第五是对收款码地址进行查询,查询数据库里面有没有一样的,有就对文件进行删除并输出相关提示,没有就进行下一步。
简单测试
测试环节
首先用txt写了一句话木马01.php。
<?php eval($_POST['ant']); ?>
1.上传01.php 。上传失败,提示错误。因为要验证木马有没有被删除,就用蚁剑进行了连接测试。失败。
2.修改文件后缀名进行上传。上传失败,蚁剑连接失败。
3. 上传图片测试。提示不是png,