我想让我的用户不要在命令行中运行“dir”,所以我使用 DOSKEY 将“Dir”别名为“CLS”。测试人员发现在“DIR”之前放置一个空格可以绕过别名。
在设置 DOSKEY 时,我尝试在“DIR”之前放置一个空格,但命令提示符忽略了空格。
有人找到了一种让 DOSKEY 确认空格的方法吗?
谢谢。
我想让我的用户不要在命令行中运行“dir”,所以我使用 DOSKEY 将“Dir”别名为“CLS”。测试人员发现在“DIR”之前放置一个空格可以绕过别名。
在设置 DOSKEY 时,我尝试在“DIR”之前放置一个空格,但命令提示符忽略了空格。
有人找到了一种让 DOSKEY 确认空格的方法吗?
谢谢。
拒绝您的用户对所有相关位置的列出目录内容权限。这可能是更简单的方法。这样他们可以运行dir
,但它不会有任何用处。
不过,我什至不想弄清楚你为什么想要这样的东西。
关于doskey
:正如您所注意到的,宏替换是按字面意思完成的,并且仅在命令行的开头完成。那你想做什么?dir
为to创建宏,cls
前面有 1、2、3、...、8188 个空格?
黑名单几乎永远不会奏效,在这种情况下肯定不会奏效。例如,您可以通过反复按 TAB 来列出目录中的文件。
相反,使用白名单。编写一个接受用户输入的控制台应用程序,检查输入是否是允许用户运行的命令,如果是,则将该命令传递给 shell——或者,更好的是,自己实现“批准”的命令,这样(a) 不能有任何特殊字符的诡计,并且 (b) 您可以从批准的应用程序列表中删除 cmd.exe - 您正在使用软件限制策略,对吗?
即使您可以弄清楚如何使您的 DOSKEY 宏想法起作用(我认为您做不到),那也毫无意义。您的用户可以通过创建以下批处理文件轻松绕过限制:
@dir %*
DOSKEY 宏在批处理文件中不起作用,因此没有什么可以阻止批处理文件执行。并且您的用户可以将批处理文件命名为他们想要的任何名称,因此您将拥有一个时间监管的恶魔。