我想防止我的用户在命令行中运行"dir“,所以我使用DOSKEY将"Dir”别名为"CLS“。测试人员发现,在"DIR“前加一个空格可以绕过别名。
在设置DOSKEY时,我尝试在"DIR“前放一个空格,但命令提示符会忽略空格。
有没有人找到让DOSKEY承认空格的方法?
谢谢。
发布于 2012-08-16 03:57:06
拒绝您的用户对所有相关位置的“列出目录内容”权限。这可能是更简单的方法。这样他们就可以运行dir了,但它没有任何用处。
不过,我甚至不想弄明白你为什么想要这样的东西。
关于doskey:正如您所注意到的,宏替换是逐字完成的,并且仅在命令行的开头执行。那么你想做什么呢?为dir to cls创建宏,前面有1,2,3,...,8188个空格?
发布于 2012-08-16 06:24:26
黑名单几乎从来都不起作用,在这种情况下肯定也不会起作用。例如,您可以简单地通过重复按TAB键来列出目录中的文件。
相反,请使用白名单。编写一个接受用户输入的控制台应用程序,检查输入是否是允许用户运行的命令,如果是,则将该命令传递给外壳程序-或者,更好的做法是自己实现“批准的”命令,这样(a)不能有任何带有特殊字符的把戏,(b)您可以从批准的应用程序列表中删除cmd.exe -您使用的是软件限制策略,对吧?
发布于 2012-08-16 12:10:41
即使你能弄清楚如何让你的DOSKEY宏观想法工作(我不认为你能做到),它也是毫无意义的。您的用户可以通过创建以下批处理文件轻松地绕过限制:
@dir %*DOSKEY宏在批处理文件中不起作用,因此没有什么可以阻止批处理文件的执行。而且您的用户可以为批处理文件命名任何他们想要的名称,因此您将面临一段非常艰难的时间。
https://stackoverflow.com/questions/11976198
复制相似问题