几年前,我在学习期间为一家小公司编写了一个网站。我开始意识到我的安全技能并没有达到应有的水平,最近该网站遭到黑客攻击,并且使用用于图像上传的表单上传了恶意 php 代码。
此后我进入了 .NET 世界,虽然我知道如何保护 .NET 中的文件上传,但我真的不知道如何使用 PHP 来做到这一点。很抱歉,我无法提供任何源代码,因此我不希望任何人为我的代码发布任何直接修复。
我希望有人可以向我展示一种服务器端分析的好方法,以确保上传的 $FILES 数组内容实际上是图像或音频文件,或者至少不是 php 文件。
很高兴你问了。这是一个棘手的话题,很少有应用程序开发人员意识到安全风险。
我将为您提供应该采取的方法的摘要,并阅读一些内容以了解更多信息。请务必阅读附加阅读材料,因为我的总结不完整。
Summary:
将用户上传的内容托管在单独的域上。这是您可以采取的最重要、最可靠的防御措施。
上传时检查上传文件的 MIME 类型,以确保其位于安全 MIME 类型白名单中。生成一个新的随机文件名来保存它。对于某些文件类型(例如图像),请考虑重新编码(例如,转换为 PNG,或使用 ImageMagick 将其从文件类型转换为相同的文件类型),因为这可能会阻止某些攻击。
下载/检索文件时,请确保设置Content-Type:
标头明确指向安全 MIME 类型。还设置了一个X-Content-Type-Options: nosniff
标头。如果您不希望在浏览器中查看该文件,请发送Content-Disposition: attachment
header 也使浏览器将其视为文件下载。
扫描上传的文件是否有病毒或恶意软件。
Reading:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)