我需要实现一个安全的PHP文件上传脚本。您目前使用哪些方法来确保脚本安全?
我将允许扩展列入白名单,并确保Apache以用户身份运行,以避免默认情况下需要777权限。
上传的文件将是图片,我有MySQL访问权限。用户需要能够在上传后看到他们的文件。
谢谢!
答案 0 :(得分:1)
有些建议可以避免上传恶意文件,请参阅Ways to stop people from uploading GIFs with injections in them?的答案。
另一个重要的事情是避免SQL注入。任何可以由攻击者修改的数据(cookie,用户代理,查询字符串,POST数据(包括上传的文件名),标题,动态路径名等)都不应在未通过mysql_real_escape_string
或{的情况下使用{3}}首先。如果是整数,请使用intval()
函数。
答案 1 :(得分:0)
正如您所说,检查文件扩展名,但要验证具有适当扩展名的上传文件实际上是它所说的,请尝试running it through imagemagick using the verify command。这是一个简单的解决方案,似乎是极少数几种保证方式之一,毫无疑问,图像就像它声称的那样。
另外,使用PHP函数is_uploaded_file来增加额外的安全级别。
希望不言而喻,但是PDO应该用于PHP的所有方面的数据库事务。
最后,请记住,如果您使用javascript进行任何验证,那么它可以轻松地被半合格的Web用户覆盖。客户端验证对用户的响应速度更快,但始终通过适当的服务器端检查进行备份。