Tag: security

从桌面应用程序使用时的PasswordVault安全性

我想在我的桌面应用程序(基于WPF)中使用Windows.Security.Credentials.PasswordVault来安全地存储用户的密码。 我设法使用此MSDN文章访问此Windows 10 API。 我做了一些实验,看来从一个桌面应用程序(不是本机UWP应用程序)写入PasswordVault的任何数据都可以从任何其他桌面应用程序中读取。 即使使用Desktop Bridge技术打包我的桌面应用程序,因此具有Package Identity也无法解决此漏洞。 任何想法如何解决这个问题,并能够从其他应用程序安全存储应用程序的数据? 更新:似乎PasswordVault没有为DPAPI增加额外的安全性。 案件结案,结果为否定。

C#如何确定HTTPS

如何确定并强制用户仅使用HTTPS查看我的网站? 我知道它可以通过IIS完成,但想知道它是如何以编程方式完成的。

使用WindowsImpersonationContext模拟当前用户访问网络驱动器

我需要从Web App访问远程驱动器。 ASP.NET进程无法访问该驱动器,因此我想模拟当前用户的请求。 我看到了一些使用WindowsImpersonationContext的基本示例,并尝试了以下操作。 WindowsImpersonationContext impersonationContext = null; try { impersonationContext = ((WindowsIdentity)User.Identity).Impersonate(); file.SaveAs(filePath); } finally { if (impersonationContext != null) { impersonationContext.Undo(); } } 我仍然获得访问被拒绝的例外。 我已经阅读了一些关于LogonUser的东西,但据我所知,你需要一个用户名和密码才能从中获取凭据。 我不打算以不同的特定用户身份登录,只是当前用户(谁应该有权访问文件存储),所以我认为我实际上并不需要LogonUser API。 有谁知道我错过了什么? 上述代码应该有效吗? 我还要注意包括 不起作用,但包括 在web.config让我进来。我看到一些人问这是为什么,但我没有看到任何解释。 我想知道它是否与我的问题有关。

比较C#和ColdFusion(CFMX_COMPAT)之间的密码哈希值

我有一个密码哈希存储在一个表中,并通过以下coldfusion脚本放在那里 – #Hash(Encrypt(Form.UserPassword,GetSiteVars.EnCode))# 我想在ac#应用程序中添加一些外部function。 我希望能够利用已存在的数据,以便我可以对用户进行身份validation。 有谁知道如何在c#中复制上述coldfusion代码? 谢谢你的任何想法。

每个请求都有AntiForgeryToken更改

我正在使用AntiForgeryToken帮助方法。 根据我对AntiForgeryToken的理解,它是会话库,因此每个用户具有相同的令牌,但另一个用户将拥有不同的令牌(前提是您对所有表单使用相同的盐)。 我的“问题”是AntiForgeryToken为具有相同salt的同一用户生成不同的令牌。 例如 … 位指示 public ActionResult Test() { return View(); } 视图 @using (Html.BeginForm()) { @Html.AntiForgeryToken(“Salty!”) } 输出请求#1 输出请求#2 对于具有相同盐的相同会话,键是不同的。 我对CRSF保护有根本的误解吗? 或者这是一个新function?

在程序代码中安全地存储密码?

我的应用程序使用RijndaelManaged类来加密数据。 作为此加密的一部分,我使用加载了密码的SecureString对象,将其转换为字节数组并在运行时加载到RajindaelManaged对象的Key中。 我的问题是存储此SecureString。 用户输入的密码可以在运行时输入,并且可以“安全”加载到SecureString对象中,但如果没有给出用户输入的密码,那么我需要默认为某些东西。 所以问题最终归结为: 如果每次我的应用程序运行时都必须有一些已知的字符串或字节数组加载到SecureString对象中,我该怎么做? “加密”数据最终会被另一个应用程序解密,所以即使没有指定用户输入密码,我仍然需要在从一个应用程序转到另一个应用程序时对数据进行加密。 这意味着我不能将默认密码设为随机,因为其他应用程序无法正确解密它。 我正在考虑的一个可能的解决方案是创建一个仅发出单个密码的dll,然后我使用该密码并在运行时通过几个不同的散列/重组函数运行它,然后我最终将其提供给secureString对象。 这会足够安全吗? 编辑为清晰起见*:加密数据通过机器之间的文件传递。 将其视为始终具有密码的Zip文件,如果用户没有直接输入任何密码,则假定为默认密码。

在没有代码签名的情况下从文件共享运行.NET应用程序

每当从文件共享运行.NET exe时,.NET安全模型都会抛出安全性错误。 从本地驱动器运行时不会出现该错误。 有没有人知道解决这个问题的方法,而不需要签署代码?

在带有MVC 3的ELMAH中,如何从错误日志中隐藏敏感表单数据?

这是场景…… 用户输入他的用户名。 键入“不正确”的密码。 用户名和密码值都通过Exception.Context.Request.Form[“Password”]传递给Elmah错误日志。 它是只读值,无法修改。 不…我不想解雇exception(失败)。 我们以编程方式添加了ErrorLog Filtering: void ErrorLog_Filtering(object sender, ExceptionFilterEventArgs e) { if (e.Exception is LogOnException) { ((HttpContext) e.Context).Request.Form.Remove(“Password”); // This is what we want to do, but we can’t because it is read-only } } 但无法修改Request.Form,以便从我们的错误日志中隐藏密码。 有没有人遇到过这种方法? 我基本上想要没有密码字段的所有错误数据。 我们考虑手动记录它,但与简单地隐藏敏感数据相比,这似乎是很多工作。 干杯伙计们。 提前致谢。

owin oauth发送其他参数

我确信这是可能的,但不确定如何实现。 我有一个OWIN OAUTH实现,它当前接受用户的用户名和密码,并根据数据库对它们进行身份validation。 我想扩展它以通过SmartCard Uid来支持使用SmartCard进行单点登录。 我可以在OWIN登录中传递其他参数吗?如果是,如何传递? 基本前提是用户可以使用用户名/密码组合或SmartCard uid登录(如果通过SmartCard uid并且在数据库中找到,则应用程序将登录用户) 我目前正在传递username , password和grant_type ,我想将uid添加到该列表中并在我的AuthorizationServiceProvider选择它。 我可以在OAuthGrantResourceOwnerCredentialsContext上看到UserName , Password和ClientId ,但我看不到任何其他属性可以支持我想要实现的内容。 这是我目前在我的服务提供商中所拥有的 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { context.OwinContext.Response.Headers.Add(“Access-Control-Allow-Origin”, new[] { “*” }); var user = await this._userService.FindUser(context.UserName, context.Password); if (user == null) { context.SetError(“invalid_grant”, “The user name or password is incorrect.”); return; } var identity = new […]

在.NET中创建加密安全随机GUID

我想在.NET中创建一个加密安全的GUID(v4)。 .NET的Guid.NewGuid()函数不具有加密安全性,但.NET确实提供了System.Security.Cryptography.RNGCryptoServiceProvider类。 我希望能够将随机数函数作为委托传递给Guid.NewGuid (或者甚至传递一些提供生成器接口的类)但是看起来并不像默认实现那样。 我可以通过一起使用System.GUID和System.Security.Cryptography.RNGCryptoServiceProvider来创建加密安全的GUID吗?