Tag: 安全

访问级别和修饰符(私有,密封等)是否在C#中起到安全作用?

我已经看到你可以使用reflection来操纵私人和内部成员 。 我也看到它说’密封’类更安全,而不是 。 修饰语“公开,受保护,内部,私有,抽象,密封,只读”只不过是绅士关于设计和API使用的协议,只要您能够获得反思,就可以打破它们吗? 如果一个黑客已经在运行调用你的API的代码,游戏就已经丢失了,对吧? 以下是否比任何其他类更安全? //private class sealed class User { private string _secret = “shazam”; public readonly decimal YourSalary; public string YourOffice{get;}; private DoPrivilegedAction() { } }

绑定PasswordBox密码是个坏主意吗?

我已经读过, 出于安全原因, WPF PasswordBox中的密码没有用于绑定密码的依赖项属性。 尽管如此, 无论如何都有办法绑定它 。 MVVM模式的用户需要这种数据绑定; viewmodel无法在不破坏模式的情况下直接触摸PasswordBox。 在MVVM设置中使用PasswordBoxes的一种方法是将整个PasswordBox控件传递给ViewModel,但这无论如何都会破坏模式。 绑定密码可能是使用MVVM处理密码的最简洁方法。 有一个反对绑定密码的论据,因为这会将明文密码保存在未加密的内存中,直到它被垃圾收集。 但是,我看到它的方式是,从您访问Password属性的那一刻起,密码就会存储在未加密的内存中。 这个观点(或类似的)似乎在这个问题上得到了支持 。 当然,它会在没有约束力的情况下在更短的时间内存在(不是登录forms有长期存在的倾向),但风险仍然存在。 鉴于这些论点,绑定密码真的是一个坏主意吗? 为什么?

C# – 在本地安全地存储密码

我正在创建一个C#应用程序,它将在Kiosk风格的环境中锁定function(组合键,窗口任务栏等)。 其中一个要求是,某些人仍然可以使用密钥组合和密码来突破应用程序。 应用程序本身已完成,但我还没有找到一种存储和检查密码的好方法。 一切都应该存储在本地(没有检查网络数据库或其他)。 如何定义用于解锁我的应用程序的密码,同时使其灵活(无需重新编译应用程序即可更改密码)。 我怎样才能以安全的方式实现这一目标?

密码扩展 – 一种缓解CPU泛滥的方法

我现在正在所有网站上使用密码拉伸来获取所有用户帐户密码。 在db中,我存储了一个迭代计数和随机分配的盐以及最终的哈希值。 我使用SHA512作为哈希算法。 我在.Net 3.5 和 4.0(双框架库)中使用C#。 对于只获得随机分配密码的帐户(例如Web服务API用户等),我将迭代计数保持在一个范围内,使得密码检查不超过1秒左右。 多年来,根据这些网站是否坚持(!),我将考虑增加这些范围与CPU功率一致。 对于用户可能自己选择密码的帐户,我已经加快了迭代次数,因此在执行迭代时登录可能需要大约5秒。 所以我对密码的安全性感到满意; 但是现在我还有另外一个问题 – 如果我让8个不同的人立刻登录,我可以使用100%的使用率8个核心cpu充满5秒钟! 我目前的解决方案是使用迭代阈值:如果拉伸操作超过此值,我将其推送到由单个线程处理的队列。 我可以进一步扩展它,以便它最多使用机器中的一半处理器。 我还能做些什么吗? 您是否为密码存储和登录实现了此模式 – 您做了什么?

清理SQL数据

Google提出了各种关于清理Web访问查询的讨论,但我找不到任何解决我关注的问题: 在ac#程序中清理用户输入数据。 这必须通过可逆转换来完成,而不是通过移除来完成。 作为问题的一个简单例子,我不想破坏爱尔兰名字。 什么是最好的方法,是否有任何库函数可以做到这一点?

如何以编程方式调用Windows权限对话框?

我正在尝试编写证书管理器,我想管理证书文件的权限。 我不希望重新发明Windows权限对话框的轮子,所以理想情况下会有某种shell命令,我可以传递其权限被管理的项目的路径。 然后,我可以调用它并让shell负责更新权限。 我在这里和那里看到过一些shell函数SHObjectProperties,但是没有明确说明如何使用它。 任何帮助,将不胜感激。

Windows服务无法从我的Installer构造函数中访问app.config

我想将我的Windows服务’登录的用户名/密码信息存储为app.config中的’用户。 所以在我的安装程序中,我试图从app.config中获取用户名/密码并设置属性,但是在尝试安装服务时遇到错误。 如果我硬编码用户名/密码,它工作正常,当我尝试访问app.config时失败 public class Blah : Installer { public Blah() { ServiceProcessInstaller oServiceProcessInstaller = new ServiceProcessInstaller(); ServiceInstaller oServiceInstaller = new ServiceInstaller(); oServiceProcessInstaller.Account = ServiceAccount.User; oServiceProcessInstaller.Username = ConfigurationManager.AppSettings[“ServiceProcessUsername”].ToString(); } }

使aspx身份validationcookie无效

我有一个asp.net网络表单。 当用户进行身份validation时,它会创建一个名为.aspxauth的安全cookie uppon logout,我称这两种方法 FormsAuthentication.SignOut(); Session.Abandon() 问题是我们进行了渗透测试,如果我偷了cookie,注销并手动重新插入cookie,我就会再次进行登录。 所以.aspauth不是服务器端无效的。 我用Google搜索了,我无法找到安全漏洞的答案。

如何确定目录路径是否为SUBST

如何确定文件是否在SUBST的文件夹中或使用C#位于用户文件夹中?

MSTEST PrincipalPermission

如何对使用PrincipalPermission属性修饰的代码进行unit testing? 例如,这有效: class Program { static void Main(string[] args) { AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); var c = new MyClass(); } } [PrincipalPermission(SecurityAction.Demand, Role = @”BUILTIN\Users”)] class MyClass { public MyClass() { Console.WriteLine(“This works.”); } } 这会抛出SecurityException: [TestClass] public class UnitTest1 { [TestInitialize] public void TestInitialize() { AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal); } [TestMethod] public void TestMethod1() { var c = new […]