Tag: 安全

Asp.net ConnectionString以安全的方式

我无法在谷歌上得到满意的答案,他们是: ConnectionString比HttpRequest更安全吗? 在web.config文件中使用ConnectionString比在任何特定的aspx页面中使用更安全吗? 以及如何为高度安全的网站保护ConnectionString? 我很想知道这件事。

会话安全存储登录名和密码哈希吗?

为Intranet应用程序存储用户名和SHA1登录的最佳方法是什么? 会话相对安全的方式来保存多域信息,用户名和密码哈希等信息吗? 我将它们保存为Session[“data”] = customObject() 我是否需要执行任何其他步骤才能确保这些数据安全? 是否存在可能受到危害的潜在安全问题或漏洞? 某种会话注入? 我应该使用一些私钥进程来锁定/打开会话数据以供阅读吗?

如何在.NET应用程序中隐藏加密密钥?

我正在开发一个内部网应用程序(C#),它使用我们想保密的一些数据(Web服务器本地)。 使用遗留数据存储库对此数据进行加密(AES)。 我们无法完全阻止对机器的物理访问。 显然,我们永远不会在这里拥有完美的安全性。 但是,我们希望尽可能让任何人都未经授权访问数据。 问题是如何最好地存储密钥。 可以选择基于某些机器特定ID对其进行加密,但是在机器上运行诊断工具的任何人都可以轻松获得该信息。 在应用程序中对其进行编码是一种选择(它是一次性应用程序)。 但是,.NET程序集很容易反编译。 那么,最好是混淆它,使用加密启动器,编译它? 或者有一个我缺少的选项? 正如我们清楚的那样,我知道如果某人有决心,这几乎是一个失败的原因,但我们希望在限制范围内尽可能地努力。

如何检查域中是否存在Windows用户帐户名?

在C#中检查Windows用户帐户名是否存在的最简单,最有效的方法是什么? 这是在域环境中。 输入:[域] / [用户]格式的用户名(例如“mycompany \ bob”) 输出:如果用户名存在,则为True,否则为false。 我确实找到了这篇文章,但是这些示例与validation和操作用户帐户有关,并且他们假设您已经拥有用户可分辨名称,而我从用户帐户名称开始。 我确信我可以使用AD来解决这个问题,但在我这样做之前,我想知道是否有一个简单的更高级API可以满足我的需要。 *更新* 可能有很多方法可以做到这一点,Russ发布了一个可以工作的方法,但我无法弄清楚如何调整它以在我的环境中工作。 我确实找到了一种不同的方法,使用WinNT提供程序为我完成了这项工作: public static bool UserInDomain(string username, string domain) { string path = String.Format(“WinNT://{0}/{1},user”, domain, username); try { DirectoryEntry.Exists(path); return true; } catch (Exception) { // For WinNT provider DirectoryEntry.Exists throws an exception // instead of returning false so we need to trap it. […]

C#generics与常量

有没有类似于这个C ++模板的东西? template class B { int f() { return A; } } 我想使B ,B 等的每个实例(例如元组)成为不同的类型。

如何使用C#制作表单系统模式?

我需要在整个系统范围内显示表单,例如屏幕上的/全部/其他窗口。 我确实意识到这通常是/坏的UI练习/,但我有非常具体的场景。 我们打算将普通的Windows PC用于POS现金登记。 屏幕上有一个选项可以打开现金抽屉。 如果有人只是在屏幕上按某些东西并且在职员不看的时候获得金钱,那将是相当糟糕的。 因此,我们为个人电脑配备了RFID阅读器,每位职员都有他/她自己的RFID卡,用于认证。 然而,当职员离开时,我需要一种锁定计算机(或使其无法使用)的机制。 注销似乎太麻烦了。 任何想法欢迎。 LP,Dejan

System.Security.Principal.WindowsIdentity的使用是否合理安全?

System.Security.Principal.WindowsIdentity是否合理安全,不会被黑客攻击,这样我从Thread.CurrentPrincipal的Identity或WindowsIdentity.GetCurrent()得到的实例对于IsAuthenticated是true ,会给我的程序集提供虚假身份信息? 当然,没有什么是完全防篡改的,但鉴于微软对.Net的承诺和依赖,我认为像这样的关键API会被锁定并难以篡改。 这是我的有效假设吗? 我的目标是在我的程序集中提供合理的最佳实践SSO。 如果Windows本身受到了损害,那是我无法控制的,但是如果(例如)对于链接到我的程序集的应用程序而言,这是一个直接的问题,以便向我提供虚假信息,那就是因为我没有做尽职调查。 这对我来说是一个无知的大区域。 要清楚,我正在寻找难以获得的信息,而不是袖手旁观。 因此,发布的漏洞利用,或者以一种欺骗我的代码等方式展示WindowsIdentity构造函数的使用。或者在“那是一个有效的假设”方面,支持它的固体文章,依赖它的已知用途等等。找到它们有很多运气,但我已经将我在目前为止在分频器下发现的内容包括在内。 以下是我打算如何使用WindowsIdentity : using System.Security.Principal; using System.Threading; // … // I only want Windows-authenticated users WindowsIdentity identity = Thread.CurrentPrincipal == null ? null : Thread.CurrentPrincipal.Identity as WindowsIdentity; SecurityIdentifier sid; // I can’t imagine how an authenticated account would be anonymous, but… if (identity != null && identity.IsAuthenticated […]

文件权限不会inheritance目录权限

我有一个程序正在为用户输出创建一个安全的目录。 这是正常的,但我在其中创建的文件(或复制到它)最终只有管理员访问权限。 DirectoryInfo outputDirectory = baseOutputDirectory.CreateSubdirectory(outputDirectoryName, GetDirectorySecurity(searchHits.Request.UserId)); … private DirectorySecurity GetDirectorySecurity(string owner) { const string LOG_SOURCE = “GetDirectorySecurity”; DirectorySecurity ds = new DirectorySecurity(); System.Security.Principal.NTAccount ownerAccount = new System.Security.Principal.NTAccount(owner); ds.SetOwner(ownerAccount); ds.AddAccessRule( new FileSystemAccessRule(owner, FileSystemRights.FullControl, AccessControlType.Allow)); //AdminUsers is a List that contains a list from configuration // That represents the admins who should be allowed foreach (string […]

如何将安全头添加到SOAP消息?

我正在尝试使用我们的提供商从C#App中使用Java编写的WebService。 什么时候沟通,我得到这个: WSDoAllReceiver:传入消息不包含必需的安全标头 从昨天开始,我正在尝试找出如何将安全头添加到SOAP消息中。 是的,我读过这篇文章( 对如何创建SOAP 标题无能为力 )但它没有用。 我环顾四周,这似乎是个问题。 我想知道我是否可以在这里得到一些帮助,一些指针,一些代码,让我开始。

RNGCryptoServiceProvider – 更快地生成范围内的数字并保留分布?

首先,我正在打电话,所以请原谅糟糕的格式! 我现在已经做了很多搜索,但没有找到明确的答案。 如果没有一个,那么公平,但我确信有人比我必须有一个好答案更聪明! 我正在使用RNG加密提供程序以真正天真的方式生成范围内的数字: byte[] bytes = new byte[4]; int result = 0; while(result max) { RNG.GetBytes(bytes); result = BitConverter.ToInt32(bytes); } 当范围足够大以至于获得结果的可能性很大时,这是很好的,但是今天早些时候我遇到的范围足够小(在10,000个数字内)可能需要一个年龄。 所以我一直在努力想出一个更好的方法来实现合理的分配,但会更快。 但是现在我正在深入学习数学和统计数据,而我在学校根本就没有这样做,或者至少如果我这样做,我已经忘记了这一切! 我的想法是: 获得最小和最大的最高设置位位置,例如,对于4,它将是3,对于17,它将是5 从prng中选择至少包含高位的字节数,例如,在这种情况下为8位 查看是否设置了允许范围(3-5)中的任何高位 如果是,请将其转换为包含高位的数字 如果该数字在最小值和最大值之间,则返回。 如果以前的任何测试失败,请重新开始。 就像我说的那样,这可能非常幼稚,但我相信它会在比目前的实施更快的范围内返回一个匹配。 我现在不在电脑前所以无法测试,明天早上英国时间会这样做。 但当然速度并不是我唯一关注的问题,否则我只会使用随机 (如果有人会非常友好,那么在那里需要几个刻度线来正确格式化 – 它们不在Android键盘上!)。 我对上述方法的最大担忧是,我总是丢掉由prng生成的最多7位,这看起来很糟糕。 我想到了将它们考虑在内的方法(例如一个简单的添加),但它们似乎非常不科学的黑客! 我知道mod技巧,你只需要生成一个序列,但我也知道它的弱点。 这是死路一条吗? 最终,如果最好的解决方案是坚持当前的实现,我会觉得必须有更好的方法!