我正在浏览一个当前项目,添加必要的代码以防止SQL注入,XSS等。但是我想知道通过文件上传执行SQL注入有多容易?
有没有人知道这方面的知识?
答案 0 :(得分:4)
您应该清理任何用户提供的输入。这包括$ _FILES。例如,如果将上载的文件名存储在数据库中,攻击者就可以利用它。
答案 1 :(得分:1)
qbert220已经正确回答了这个问题,但我想补充说明。
你应该确保文件是正确的MIME类型,否则如果你希望上传然后显示图像,如果“讨厌的用户”上传一个php脚本,它可以在你的服务器上运行并做你能做的任何事情用脚本。
答案 2 :(得分:0)
这取决于您的应用需求。如果您正在创建图库并想要标记上传的图像,则可能需要将图像的数据添加到数据库中。为此,您可能需要在数据库中放入$_FILES['image']['name']
的内容,然后在不转义其值的情况下进行SQL注入。
答案 3 :(得分:0)
如果您要将文件名插入数据库,则可以执行此操作。
mysql_query("INSERT INTO images VALUES ('".$_FILES['upload']['name']."');"); //this is injectable
答案 4 :(得分:0)
永远不要认为给定的输入是否可以用于SQL注入,转义任何发送到数据库的变量。当您输出变量时,同样适用于XSS。不要相信$ _SERVER或任何其他超全球。不要相信你的变量(在代码中初始化的变量)。