Tag: security

ASP.NET Membership C# – 如何比较现有的密码/哈希

我一直在讨论这个问题。 我需要将用户输入的paasword与会员数据库中的密码进行比较。 密码经过哈希处理并且有盐。 由于缺少文档,我不知道盐是否附加到密码,然后散列如何创建它。 我无法得到这个匹配。 从函数返回的散列永远不会匹配数据库中的散列,我知道它是相同的密码。 微软似乎以与我不同的方式对密码进行哈希处理。 我希望有人有一些见解。 这是我的代码: protected void Button1_Click(object sender, EventArgs e) { //HERE IS THE PASSWORD I USE, SAME ONE IS HASHED IN THE DB string pwd = “Letmein44”; //HERE IS THE SALT FROM THE DB string saltVar = “SuY4cf8wJXJAVEr3xjz4Dg==”; //HERE IS THE PASSWORD THE WAY IT STORED IN THE DB […]

安全使用SecureString登录表单

所以这个类似乎很少使用: SecureString 。 它至少从2.0开始就存在,并且有一些SO问题,但我想我会问自己的具体问题: 我有一个LoginForm; 带有用户名和(掩码)密码字段的简单WinForms对话框。 当用户同时输入并单击“登录”时,信息将传递到执行一层键扩展的注入认证类,然后散列一半拉伸键进行validation,而另一半是加密用户的对称密钥帐户数据。 完成所有这些操作后,将关闭loginForm,处理身份validation器类,然后系统继续加载主窗体。 非常标准的东西,可能比标准的哈希 – 密码和比较更多一些,但在我的情况下,简单的哈希密码将通过以明文forms存储用户数据而被打败,因为该数据包括第三个的凭证 – 派对系统(我们都知道人们如何重用密码)。 这是第一个问题; 我如何使用SecureString从密码文本框中检索密码, 而不通过文本框的Text属性将其公开为普通的System.String? 我假设有一种方法可以访问由CLR类包装的Textbox的非托管GDI窗口,并使用Marshal类提取文本数据。 我只是不知道怎么样,而且我似乎无法找到好的信息。 这是第二个问题; 一旦我将密码作为SecureString,我如何从System.Security.Crypto命名空间将其传递给哈希提供程序? 我的猜测是我使用Marshal.SecureStringToBSTR(),然后Marshal.Copy()从返回的IntPtr返回到一个字节数组。 然后我可以调用Marshal.ZeroBSTR()来清理非托管内存,一旦我有哈希,我可以用Array.Clear()将托管数组清零。 如果有一种更简洁的方法可以让我完全控制内存的任何托管副本的生命周期,请告诉我们。 第三个问题; 这一切真的是必要的,还是在管理内存环境中System.String固有的不安全性有点过分了? 用于存储密码(加密或其他方式)的任何内容都应该超出范围并且在操作系统考虑将应用程序交换到虚拟内存之前很久就会进入垃圾收集器(允许在交换文件之后从交换文件中嗅探密码)硬关机的电脑)。 冷启动攻击是一种理论上的可能性,但实际上,这有多常见? 更大的问题是现在解密的用户数据,它在整个应用程序生命周期中作为用户的一部分而挂起(因此将成为使用SecureStrings的主要候选者,因为除了几个基本用法之外,它们保持相当hibernate状态)。

检查计算机上的第三方防火墙

我正在检查防火墙。 以下代码非常容易检查默认Windows防火墙的状态: INetFwMgr manager = GetFireWallManager(); bool isFirewallEnabled = manager.LocalPolicy.CurrentProfile.FirewallEnabled; if (isFirewallEnabled == false) { Console.WriteLine(“Firewall is not enabled.”); } else { Consoe.WriteLine(“Firewall is enabled.”); } Console.ReadLine(); private static INetFwMgr GetFireWallManager() { Type objectType = Type.GetTypeFromCLSID(new Guid(firewallGuid)); return Activator.CreateInstance(objectType) as INetFwMgr; } 然后问题变成:如何查找非Windows防火墙的状态? 如果防火墙已正确集成,上述检查工作是否相同,或者有更好的方法吗? 我查过这篇文章: C#Windows安全中心设置和这篇文章: C# – 如果启用外部防火墙如何chceck? 但两者都certificate相对无益。 我一直在研究WMI API,但到目前为止它非常令人困惑,而且通过MSDN提供的文档并不是很有希望。 我也尝试过使用SelectQuery,但到目前为止我还没有成功。 任何人都可以在新的起点或我可以找到有关第三方防火墙的更好文档/说明的地方帮助我吗? 编辑:目前我正在进一步探索WMI,特别是post建议的类FirewallProduct […]

.NET 4,AllowPartiallyTrustedCallers属性和SecurityCritical等安全标记

我是新的C#,我正在尝试了解.NET-4的新安全function 。 为了填写一些细节,我目前正在尝试更新AutofacContrib.Moq以使用最新的Moq。 对于.NET-3.5及以下版本,我没有遇到任何问题。 但在.NET-4中,安全限制会导致许多安全exception。 Moq有一个单独的方法GetObjectData ,它标有SecurityCritical属性。 AutofacContrib.Moq具有AllowPartiallyTrustedCallers属性集,该属性是exception的来源。 似乎不是添加SecurityRules属性为1的SecurityRules属性,而是最好删除AllowPartiallyTrustedCallers属性。 我相信这会默认使用程序集SecurityTransparent,这可能是不够的(尽管AutofacContrib.Moqunit testing通过)。 我目前的主要问题是,针对.NET-4的程序集是否应该使用AllowPartiallyTrustedCallers属性? 但是,鉴于我绝对不了解所有内容,在使用安全标记的程序集时应该考虑哪些细节? 我是否需要在其使用的地方使用安全属性明确标记我的程序集,直接或间接地标记为SecurityCritical ?

使用C#从ASP.Net MVC访问Active Directory

我需要访问Active Directory以获取有关客户所属组的信息。 我的项目是使用C#的ASP.Net MVC应用程序。 我之前从未编写过针对Active Directory的编程,并且需要一些关于最佳入门方法的建议,使用什么安全模型来访问信息,并且可能指向一些好的教程。

如何开始使用OAuth来保护Web API应用程序?

我有一个Web API应用程序,我知道OAuth将是API的标准安全模型,其中Authentication Server将负责生成授权令牌,以便用户可以发送到我们的服务器并使用服务。 我对此很新,但我理解所涉及的角色: 资源所有者 客户 资源服务器 授权服务器 但OAuth究竟在实践中是什么,而不是理论上的? 它是一个.NET库吗? 这是一家由独立公司提供的服务吗? 这是我可以在我的本地开发机器上配置的东西,看看它是如何工作的? 如何开始使用OAuth来保护Web API应用程序?

使用C#的GnuPG包装器

我使用GnuPG和C#来加密带有导入公钥的文件。 但是当我尝试加密时,GnuPG用主用户的公钥加密文件。 我确信我通过了正确的收件人。

强化命令行使用

有没有人用命令行来运行强化? 我试着在我的CI版本中加入强化运行,我不知道该怎么做。

如何根据用户角色操作WPF GUI

我使用.NET的IIdentity和IPrincipal对象来实现基于角色的安全性,我正在修改基于当前用户所拥有的角色显示的控件。 我的问题是推荐的方法是在WPF窗口中启用/禁用字段 – 显示/隐藏依赖于IIdentity.IsInRole类型调用的字段。 这可以在XAML中完成,还是我必须将其抽象为代码,我认为后面的代码有点混乱; this.txtUserName.IsReadOnly = !MyPrincipal.CurrentPrincipal.IsInRole(“Administrator”); this.mnuCreateUser.Visibility = MyPrincipal.CurrentPrincipal.IsInRole(“Administrator”); ? Visibility.Hidden : Visibility.Visible; (注意;我的代码在执行函数时检查角色,我要做的是根据角色修改GUI,因此用户看不到/看到他们无权访问的只读元素)

基于角色的安全性asp.net mvc

我很想知道在MVC中使用基于角色的安全性的最佳实践: 如何保护您的操作并使其仅可由特定角色访问?