Tag: 安全

由于反映安全问题,是否访问私有字段和属性?

我刚刚在这里发现,由于reflection,可以(至少在c#中)查找私有字段和属性。 我很惊讶,虽然我知道像DataContractSerializer类这样的构造需要访问它们的可能性。 现在的问题是,如果任何人都可以访问我class级的每个领域,这有点不安全,不是吗? 我的意思是如果有人有private bool _isLicensed字段。 它可以很容易地改变! 后来我在这里发现, 字段访问器并不是一种安全机制。 那么如何让我的应用程序安全,这意味着我如何阻止除我以外的任何人改变我的类中的基本状态值?

WCF服务双重冒充?

我的设置有点复杂,所以让我先说一下。 我们有一个WCF Web服务,它通过几个不同的API从各种来源获取数据,并将该数据返回给客户端。 请求的安全性是通过HTTPS完成的(工作)IIS标准是必须将应用程序池设置为使用基本的IIS网络服务帐户,并且应该使用.net模拟。 我的问题是Web服务应始终在AD进程ID下运行,无论谁调用它,但它还应检查调用者所在的AD组以确定可访问的function。 现在我可以设置我的web.config使用和这种工作使它总是作为Blah运行,但后来我不知道如何模仿/检查调用用户,看看他们也有访问的function。 **编辑:忘了提到调用客户端应该能够传递UN / PASS而不仅仅是它的Windows令牌。 wcf服务应该validation其有效的AD UN和PASS以及轮询它所在的组。

如何在不使用P / Invoke或reflection的情况下在.NET中启用SeCreateGlobalPrivilege?

当服务器运行非提升时,我的net.pipe WCF绑定不起作用。 这个博客帮助我找到答案 – http://weblogs.thinktecture.com/cweyer/2007/12/dealing-with-os-privilege-issues-in-wcf-named-pipes-scenarios.html 因此,我将SeCreateGlobalPrivilege权限添加到相关的非管理员用户,但现在我必须在.NET中以编程方式启用该权限 现在,互联网上有几个例子如何在.NET中完成它,但它们都基本上用C / Invoke将普通C代码重写为C#。 我想知道如何使用专用的.NET系统类型,如ObjectSecurity,Privilege等,以便我的代码不做任何P / Invoke – 让系统代码为我做。 可能吗? 谢谢。 EDIT1 是什么让我觉得有可能? 好吧,我使用Reflector搜索.NET中的AdjustTokenPrivileges P / Inovke API用法,发现有ObjectSecurity.Persist方法,最终调用此P / Invoke。 接下来,此ObjectSecurity具有一个受保护的构造函数,这意味着非MS代码可以从中派生并调用此方法。 因此,使用类型安全的.NET代码(即没有reflection)似乎是可行的。

如何在.NET中获取给定字符串的单向散列?

.NET中是否有可以计算安全单向哈希的库? 我的意思是一个实现SHA-2加密哈希函数或类似的库。 如果没有SHA-2实现,那么一些较弱的哈希函数就足够了。 如果有更多的选择,我更喜欢最安全的选项。 请提供一个使用示例,例如,提供返回字符串mySampleString的单向散列的代码。 编辑:请提供示例和使用的哈希算法。

关键加强。 我做得对吗?

我正在编写一个哈希密码的类,它通过使用System.Security.Cryptography.Rfc2898DeriveBytes类来生成用于计算哈希值的键来实现密钥拉伸 。 代码基本上是这样做的: // Higher iterations value results in better key strength var db = new Rfc2898DeriveBytes(password + salt + secretKeyFromConfigFile, saltAsBytes, iterations); byte[] hashKey = db.GetBytes(64); // 64 bytes is the recommended size for the HMACSHA512 class var sha512 = new System.Security.Cryptography.HMACSHA512(hashKey); byte[] hashInput = System.Text.Encoding.UTF8.GetBytes(password + salt + secretKeyFromConfigFile); byte[] hash = sha512.ComputeHash(hashInput); […]

将权限从一个Windows文件夹复制到另一个

我需要创建一个小型的C#Windows应用程序,它将安全权限从一个文件夹复制到另一个文件夹。 这包括复制组权限。 接近这种挑战的最佳方式是什么? Yosief Kesete

保存身份validation令牌的最佳方法?

我一直在努力在c#中实现api。 实施进展顺利,但我确实遇到了一个问题。 当我的库已经授权反对api时,我有一个auth_token,我用它来对webservice进行后续查询。 令牌需要在程序运行之间保持,因为它对于用户保持不变(尽管我确实检查它是否在应用程序启动时仍然有效)。 出于测试目的,我基本上只将令牌保存到文本文件中,该文件保存在应用程序的根目录中。 这很好,但这是最好的方法吗? 不确定用户会意识到它会保存在一个明文文件中(即使它在他自己的电脑上)。 那么,保存这样的令牌的一般做法是什么?

使用DateTime.Now有什么问题。 作为唯一ID的主要部分?

我曾经使用RNGCryptoServiceProvider来生成基于字符串的订单ID,但是,有4个实例,其中ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@$%^*()_-将生成已存在的订单ID。 它让我思考…… 为什么我们不能只使用以下内容: … @GenerateOrderId() … 和: public string GenerateOrderId() { return “OID” + DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond; } 我被告知这是一个坏主意,但没有任何解释或理由,它仍然在我脑海中。 …我之所以要使用它,是因为它永远是独一无二的。

访问非公共成员 – ReflectionAttribute

我正在从程序集A加载程序集B.我正在尝试枚举位于程序集B中的类型的私有成员。 如何使用ReflectionPermission完成此任务? 我在MSDN上找不到任何有用的东西。 Assembly asm = Assembly.LoadFrom(“Chapter13.exe”, AppDomain.CurrentDomain.Evidence); //AppDomain.CurrentDomain.Load(“Chapter13”); Type t = asm.GetType(“Chapter13.ProtectedBuffer”); MemberInfo[] members = t.GetMembers(BindingFlags.NonPublic); foreach (MemberInfo m in members) { Console.WriteLine(m.Name); } 亲切的问候PK

如何将openssl_pkey_get_public和openssl_verify转换为C#.NET

PHP代码validation来自银行的iPizza签名: $key = openssl_pkey_get_public (file_get_contents ($preferences[‘bank_certificate’])); if (!openssl_verify ($data, $signature, $key)) { trigger_error (“Invalid signature”, E_USER_ERROR); } 我尝试使用它将其转换为ASP .NET SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); X509Certificate2 cert = new X509Certificate2(HttpContext.Current.Request.MapPath(“~/App_Data/bankert.crt”), “”); RSACryptoServiceProvider rsaCryptoIPT = new RSACryptoServiceProvider(); rsaCryptoIPT.ImportCspBlob(cert.RawData); if (!rsaCryptoIPT.VerifyData(data, CryptoConfig.MapNameToOID(“SHA1”), signature)) throw new InvalidOperationException(“Invalid signature from bank “); 但是行rsaCryptoIPT.ImportCspBlob(cert.RawData)会导致Cryptography.CryptographicException无效的提供程序版本: StackTrace: at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr) at System.Security.Cryptography.Utils._ImportCspBlob(Byte[] keyBlob, […]