识别javascript中的恶意文件上载

识别javascript中的恶意文件上载,javascript,php,jquery,asp.net,html,Javascript,Php,Jquery,Asp.net,Html,我对java脚本中的文件上载有问题。例如,如果您有客户端验证来检查文件上载的MIME类型。任何人都可以将文件重命名为正确的类型,并更改MIME类型和上载。因此验证不起作用? 在客户端,我正在检查文件是否为pdf类型。因此任何人都可以将exe文件重命名为pdf并上传到服务器。是否有任何方法可以在客户端验证这些场景 谢谢不,这在客户端验证中是不可能的,因为您甚至不能确定客户端代码是否已运行 每个现代浏览器都可以禁用或修改JavaScript。依靠客户端验证来实现安全性是非常糟糕的做法,而且只能用于改

我对java脚本中的文件上载有问题。例如,如果您有客户端验证来检查文件上载的MIME类型。任何人都可以将文件重命名为正确的类型,并更改MIME类型和上载。因此验证不起作用? 在客户端,我正在检查文件是否为pdf类型。因此任何人都可以将exe文件重命名为pdf并上传到服务器。是否有任何方法可以在客户端验证这些场景


谢谢

不,这在客户端验证中是不可能的,因为您甚至不能确定客户端代码是否已运行

每个现代浏览器都可以禁用或修改JavaScript。依靠客户端验证来实现安全性是非常糟糕的做法,而且只能用于改进用户体验,例如告诉用户他们选择的用户名已经被使用,等等


您需要做的是验证服务器上的文件。鉴于您提到了PDF文件,我建议您使用库来解析它们,并验证用户是否确实上传了有效的PDF。

否,这在客户端验证中是不可能的,因为您甚至无法确定客户端代码是否已运行

每个现代浏览器都可以禁用或修改JavaScript。依靠客户端验证来实现安全性是非常糟糕的做法,而且只能用于改进用户体验,例如告诉用户他们选择的用户名已经被使用,等等


您需要做的是验证服务器上的文件。鉴于您提到了PDF文件,我建议您使用库来解析它们,并验证用户确实上传了有效的PDF。

您甚至不能保证您的客户端代码被用于将文件发布到您的上传URL,因此不可以。您必须在服务器上验证该文件。不要想得太多。一旦文件从.exe重命名为.pdf,它将只是一个无效的pdf文件,除非有人将其重命名回.exe,否则它不会突然执行。要扩展@Pointy的注释,客户端验证是一种礼貌,可以改善用户体验。服务器端验证是确保应用程序安全的必要条件。任何一个设计良好的系统都应该同时做到这两种情况。你应该考虑在客户端中通过扩展来过滤,比如帮助用户找到文件,EX,如果他们正在寻找文档,不包括图像,但是从来没有作为验证,你必须验证服务器端的一切。服务器端验证是很重要的。使用正确的mime类型。安全性应该是您的首要任务,而不仅仅是添加花哨的不安全功能。您甚至不能保证您的客户端代码被用于将文件发布到您的上载URL,因此不能。您必须在服务器上验证该文件。不要过度考虑这一点。一旦文件从.exe重命名为.pdf,它将只是一个无效的pdf文件,除非有人将其重命名回.exe,否则它不会突然执行。要扩展@Pointy的注释,客户端验证是一种礼貌,可以改善用户体验。服务器端验证是确保应用程序安全的必要条件。任何一个设计良好的系统都应该同时做到这两种情况。你应该考虑在客户端中通过扩展来过滤,比如帮助用户找到文件,EX,如果他们正在寻找文档,不包括图像,但是从来没有作为验证,你必须验证服务器端的一切。服务器端验证是很重要的。使用正确的mime类型。安全性应该是您的首要任务,不仅仅是添加花哨的不安全功能。感谢您的回答。如果用户在上传之前必须验证文件,该怎么办?取决于您所说的“验证”的含义以及您想要防止的内容。如果你想阻止攻击者上传恶意内容,你不能用客户端代码阻止他们,因为他们不遵守你的规则。谢谢你的回答。另外,如果用户在上传前必须验证文件,该怎么办?取决于你所说的“验证”和你想阻止的内容。如果你想阻止攻击者上传恶意内容,你不能用客户端代码阻止他们,因为他们不遵守你的规则。