【发布时间】:2016-09-29 08:43:24
【问题描述】:
我正在编写一个在具有提升权限的 Windows 机器上运行的应用程序。
它通过 https 调用 web 服务器上的 api 并返回可执行文件的路径(例如 c:\windows\calc.exe)
然后软件会启动那个可执行文件。
我想要实现的是让应用程序能够安全地抵御想要侵入运行我的应用程序的机器的攻击者,以防他们入侵服务器并使 api 返回任意字符串。
我认为过滤常见攻击向量的字符串是一个很好的起点,但我应该在字符串中寻找什么?
我知道在这种情况下没有完美的解决方案,但我期待一些可以防止平庸黑客的想法。
谢谢。
【问题讨论】:
-
1) 禁用父路径 (
../) 2) 另外(?): 可能会禁用某些文件扩展名,比方说,您允许拥有 EXE,但不允许拥有 OCX、DLL、COM 等否则。 -
好建议,可能我还需要过滤cmd.exe、explorer.exe和基本命令。
-
不要在这种情况下运行提升的应用程序!那就是求你交出整个系统的钥匙。而是以最低权限运行,然后仅在执行实际需要提升的命令时提升。
-
HTTPS 已加密。使用证书和身份验证来确保您的客户端应用程序实际上是在与您真正受信任的服务器而不是中间人进行通信。然后,唯一的攻击向量是破坏服务器本身(不太可能)在加密之前发送恶意命令,或者破坏您的客户端应用程序(更有可能)在解密合法命令后忽略合法命令,而是执行恶意命令。但是,除非您的应用从一开始就以管理员身份运行,否则您缺乏提升会阻止您做任何有害的事情。
-
该软件的主要目的是在没有显示器和键盘的计算机上运行,因此不需要用户干预。
标签: c# security delphi windows-7 windows-applications