我有一个ASP.Net网络应用程序,需要根据管理员用户的操作不时运行处理任务。我正在查看的任务之一将需要shelling以运行命令行应用程序,以安全地传输文件。我别无选择,只能使用我提供的命令行应用程序。
有问题的ASP.Net页面将调用我的dll,如果dll确定需要执行命令行应用程序,它将会这样做。
我想知道关于设置这个问题的潜在安全问题。这是愚蠢的和/或危险的吗?任何人都可以评论,或建议我如何安全地解决这个问题?
感谢。
答案 0 :(得分:1)
很大程度上取决于命令行应用程序是什么以及它可以做什么。最大的担忧是允许用户输入来控制该应用程序的功能。用户上传的文件是否已上传?如果是这样的话,你可能已经打开了自己的特洛伊木马。
至于安全地解决这个问题...... 仅为您的应用程序创建一个用户帐户,然后创建一个新的IIS应用程序池并将该身份设置为此帐户。配置Web应用程序以使用此应用程序池。现在只授予该帐户对Web应用程序和命令行帮助应用程序所需资源的权限。当Web应用程序启动此命令行帮助程序时,它将在与应用程序池相同的安全上下文中运行命令行进程。
如果攻击者试图通过操纵命令行应用程序来占用您的系统,那么他应该被操作系统安全性挫败。如果您的Web应用程序或帮助应用程序需要如此多的权限才能运行,则必须为应用程序帐户授予足够的权限,使用该帐户在本地登录的人员可以修改系统设置,那么您处于非常危险的境地。说不!!