为什么JavaScript不能向操作系统级别发送命令?
Why can't JavaScript send commands to the OS level?
如果HTML、CSS和JavaScript都是由用户的计算机处理的,为什么JavaScript不能向操作系统级别发送命令?我知道如果发生这种情况,黑客可以利用很多计算机,但有什么可以防止这种情况发生呢?
简单的回答:它是浏览器,你看浏览器就像你电脑上的任何其他程序一样,如果有足够的权限,它可以通过系统调用做任何它想做的事情。它可以访问你的硬盘驱动器(不仅仅是简单的文件系统,我指的是块/扇区级别的访问),读取/删除任何它想要的,它甚至可以读取/编辑你的MBR!其他有趣的东西,如弹出CD托盘/将操作系统关机或休眠/格式化驱动器xD/无限提示屏幕/禁用网络适配器/和其他疯狂的很酷的东西,你可以想象,如果浏览器制造商希望通过javascript暴露这些功能,例如。如果微软在遥远的将来通过system
对象(类似于当前javascript规范中的window
对象)公开一些系统API,你编写一个像<script>system.ejectDrive['cd']</script>
这样的脚本,浏览器可能会将其转换为实际的winapi调用mciSendCommand(mPar.wDeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
,然后成功!这很酷,但是如果一个被黑客入侵的ebay服务器给你发送了清除你的D:'驱动器的代码呢?现在你可以想象为什么浏览器制造商如此重视安全性了。您可能想知道为什么我如此痴迷于磁盘驱动器弹出xD,实际上我选择这个例子是因为它的物理性质。计算机内存中的一个随机位的变化对普通用户来说可能没有任何意义,除非它具有某种"物理效应",即使这种效应可能以某种方式依赖于该位。
JavaScript在某些情况下可以访问你的计算机:https://nakedsecurity.sophos.com/2016/06/20/ransomware -那- 100纯javascript -不-下载- required/
一些勒索软件将其js文件作为电子邮件附件,并诱使用户在本地打开。
这不是关于JavaScript的,而是关于运行脚本的软件,以及软件如何解释它。
在浏览器中使用js,它只能做浏览器允许它做的事情。
使用Node.JS,你可以编写"JavaScript"来启动你自己的服务器。当通过双击在Windows中本地运行时,它可能非常危险。
- 通过命令行/批处理文件打开页面时,将javascript代码注入Google Chrome
- 打开抽屉的Javascript打印命令
- Javascript不能在一个命令中使用函数参数
- 从web浏览器通过javascript向侦听TCP端口5500的本地应用程序发送json命令
- 在OrientDB javascript函数中执行命令后获得rid
- 如何在命令行中运行/调试javascript
- 如何在 JavaScript 中运行 shell 命令
- 有人能用for循环和splice命令帮助编辑Javascript字符串吗
- 通过下拉菜单激活Javascript命令
- 我可以使用ajax/javascript/jquery执行curl命令吗
- 如何使用javascript中的get命令读取本地文本文件
- JavaScript/HTML命令行小部件
- 了解存储的MongoDB javascript函数中MongoDB命令的返回类型
- vim JavaScript缩进插件-命令是什么
- 是否可以使用WSH javascript sendKeys方法将Alt+Space发送到命令提示符
- 检测MAC javascript中的命令键
- 防油精javascript执行命令
- ASP.net web服务使用javascript发送命令
- JavaScript,如何将变量解析为命令
- Javascript echos PHP命令,而不是PHP变量