我正在寻找一个很好的解决方案,通过它我们可以阻止exe文件上传到服务器上。
最好是我们只要在收到文件头后立即读取文件头就可以放弃上传,而不是等待整个文件上传。
我已经实施了扩展检查,寻找更好的解决方案。
答案 0 :(得分:7)
有一个方式和时间/地点部分。方法相当简单,因为二进制文件确实包含一个标题,标题很容易去掉和检查。对于Windows文件,您可以查看文章Executable-File Header Format。类似的格式用于其他二进制类型,因此您可以确定允许的类型和不允许的类型。
注意:链接文章用于完整查询文件。有便宜,简单和脏的快捷方式,你只需要检查几个字节。
when / where取决于您获取文件的方式。如果您使用的是高度抽象的方法(上传库),这是相当正常的,您可能必须先流式传输整个文件,然后才能开始查询这些位。它是否流式传输到内存中或者您必须保存和删除取决于您的编码,甚至可能是库。如果您控制流式传输,则可以在第一个字节(标题部分)中流式传输并在中间流中止该过程。
答案 1 :(得分:2)
访问上传数据的第一点是HttpModule。 从技术上讲,如果您手上有.exe并取消上传,则可以在发送所有字节之前进行检查。它可能会变得非常复杂,具体取决于你想要多大程度。
我建议你看一下Brettle的NeatUpload的HttpModule。也许它会让你在如何处理你想要的水平上领先。
答案 2 :(得分:1)
我认为您可以通过javascript检查文件是否以.exe结尾,然后再提交数据并执行检查服务器端。