如果用户的计算机处理HTML,CSS和JavaScript,为什么JavaScript不能将命令发送到操作系统级别?我知道如果发生这种情况,黑客可以利用很多计算机,但是防止它发生的是什么?为什么JavaScript不能将命令发送到操作系统级别?
回答
答案很简单:它的浏览器,你会看到浏览器就像是给予足够的权限,它可以做你的计算机上的任何其他程序为所欲为通过系统calls.It可以访问您的硬盘驱动器(不只是简单的文件系统我的意思是块/扇区级访问)阅读/删除任何它希望它甚至可以读取/编辑您的MBR!其他有趣的东西,如弹出CD托盘/把操作系统关机或休眠/格式化您的驱动器xD /无限nag屏幕/禁用网络适配器/和其他疯狂的酷东西,你可以想象如果浏览器制造商希望通过JavaScript公开这些功能,例如,所有可以完成的。如果微软在某个遥远的未来将通过system
对象暴露一些系统API的对象非常类似于当前JavaScript规范中的window
对象。 。你写这样一个脚本<script>system.ejectDrive['cd']</script>
,浏览器可以翻译成真正的winapi电话mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
和宾果!它很酷,但如果一个被黑客入侵的ebay服务器发送了你的代码来清除你的D:\ drive clean代码,现在你可以想象为什么浏览器制造商如此重视安全性。你可能想知道为什么我如此痴迷于磁盘驱动器弹出xD,实际上我选择这个例子是因为它的物理性质。计算机内存中随机位的变化可能对普通用户没有任何意义,除非它具有某种“物理效应”,即使该效果可能依赖于该位。
JavaScript可以访问您的计算机在某些情况下: https://nakedsecurity.sophos.com/2016/06/20/ransomware-thats-100-pure-javascript-no-download-required/
一些ransomwares有自己的js文件作为电子邮件附件并诱使用户打开它本地。
这不是关于JavaScript,而是关于运行脚本的软件以及软件如何解释它。
使用浏览器中的js,它只能执行浏览器允许的操作。
使用Node.JS,您可以编写“JavaScript”来启动您自己的服务器。 当通过双击在Windows本地运行时,它可能非常危险。
- 1. 在java中包含操作系统级别命令的包是什么?
- 2. 为什么不执行系统命令?
- 3. 为什么kivent_core不能在android操作系统上工作?
- 4. 为什么我不能为`git config`命令的`--includes`键操作?
- 5. 什么是操作系统和元操作系统之间的差别
- 6. 为什么TFS Build不能将xcopy识别为命令?
- 7. 运行操作系统命令的JSP
- 8. 由于操作系统升级,模拟键盘命令不工作
- 9. 为什么irc发送“命令未知”?
- 10. Jmeter只能测量操作系统级别的指标吗?
- 11. windows mobile(过去的操作系统)和windows phone 7操作系统的功能有什么区别?
- 12. 从超级终端到操作系统
- 13. 降级android操作系统1.6到1.5
- 14. 移动操作系统与桌面操作系统有什么不同
- 15. 识别操作系统
- 16. 什么是融合位置提供商的最低Android操作系统级别
- 17. 什么是MQ系列的命令级别?
- 18. 为什么选项-m32不能在我的linux操作系统上工作?
- 19. 为什么我不能得到一个退出命令工作
- 20. 为什么不能将命令从bash移植到awk中?
- 21. Android设备操作系统升级为应用程序开发
- 22. 命令不作为别名
- 23. 为什么Sitecore 8.2不支持Windows 7操作系统?
- 24. 操作系统和内核有什么区别?
- 25. 操作系统和框架有什么区别?
- 26. 为什么系统(“CLS”)在不工作?
- 27. 为x86架构开发操作系统
- 28. 开发操作系统
- 29. 为什么Docker不能用于所有目的的主机操作系统
- 30. 为什么Android模拟器不能自动从操作系统获取时区?
theres a sandbox。 –
JS与浏览器(或至少浏览器的一个组件)进行通信。如果浏览器选择不允许脚本执行某些操作,则它具有该功能。 – Carcigenicate
在浏览器中没有公开向OS级发送命令的API。这是为了防止用户计算机的网络黑客攻击。相比之下,Windows脚本宿主确实公开了一个shell命令,并且可以通过双击运行脚本文件(甚至隐藏了扩展名)。 – traktor53