我想知道我是否需要在这个asp.net应用程序上添加任何其他类型的安全性 - 网络表单(仅在网络域和VPN连接上可用)?
应用程序环境:Asp.net 4.0,Vb.net,Oracle 10g,Web服务,Window server 2003或2008,托管域名
用户身份验证模式:窗口(不使用asp.net会员资格)
身份验证方案:
应用程序可通过Intranet站点访问,系统使用其系统用户名对用户进行身份验证。在默认页面系统将首先获取当前用户名(HttpContext.Current.User.Identity.Name),然后在用户表(oracle DB)中匹配它,如果匹配则存储过程将返回所有访问权限(菜单详细信息)与此用户组相关。 oracle DB中有一个用户组和权限表。
在存储过程中,系统还会在任何DML事务之前检查用户权限。
主要安全问题
专业:限制人们访问信息取决于他们的权限。普通用户不应该访问其他人的数据。
次要:我们不希望任何人进入办公室网络以外的系统。
答案 0 :(得分:1)
正如约阿希姆所说,这种安排只支持在本地网络上运行的Windows系统。转移到基本身份验证将允许更多客户端连接,但在没有HTTPS的情况下在网络上公开密码(实际上是明文)。表单身份验证类似。
如果没有服务器身份验证,用户可能会在他们不知情的情况下被重定向到类似的服务器,或遭受中间件攻击。 HTTPS为您提供服务器证书。这可能不是本地网络的问题,但用户的hosts
(在c:\ windows \ system32 \ drivers \ etc中)文件通常容易受到攻击。
如果没有加密,任何用户都可以通过网络嗅探发回的信息,前提是他们在同一个子网上。对于大多数应用来说,这可能是可接受的风险,但如果信息是敏感的,则不是包含敏感或个人信息。
如果人们正在执行批准等重要操作,请考虑重播攻击(请参阅How do I prevent replay attacks?获取示例)。
考虑审核对数据库的访问权限,尤其是用户组和权限表。有人可以添加自己或将它们移动到一个组中,执行操作然后自行删除。检查您的页面是否有SQL注入以及可以实现此目的的类似攻击。
总之,人们有多大可能会妥协或干扰系统,以及您愿意投入多少资金来保护系统?假设服务器可以处理负载,那么作为第一步,HTTPS很难过去。
答案 1 :(得分:0)
不确定您使用的是哪种ASP.Net技术(MVC / Razor / Web Forms)。
如果您使用 Web表单,则可以立即利用ASP.NET Login Controls之类的LoginView Control。它们与ASP.Net Forms Authentication一起使用(使用或不使用ASP.net成员资格)。您还可以利用Roles。
如果您的Intranet服务器未公开(以任何方式)在您的网络中公开,则应该“受到保护”。当然,这是一个大胆的声明,完全取决于您的网络实施 - 例如子网划分,内部网络/无nat /路由/没有端口转发,没有dns等。这使得 VPN 成为您从外部曝光的唯一点,然后您必须强制执行适用于您的VPN基础架构的安全策略 - 例如一次性密码,客户检查等。
更新
如果您使用的是Active Directory,则可以在AD中创建用户/组以相应地提供访问权限(例如,Finance AD组只能访问“finance”文件夹)。但是,我没有及时了解Internet Explorer之外的NTLM浏览器支持。
您确实提到过用户数据在Oracle数据库中(?)。我不熟悉使用db / Oracle不允许登录屏幕访问(到网络资源)的解决方案......
此外,这意味着可能无法使用VPN访问的一次性密码。查看基于令牌的VPN,以便用户仍然可以使用他们的AD凭证,但每次都需要一个新令牌 - 这将有助于缓解“黄色便签中的密码”(因为您可以更严格地控制令牌)。