【发布时间】:2013-11-20 07:50:48
【问题描述】:
我有一个扩展方法,我希望能够通过容器获取类的实例 例如
public static string EncryptString(this SecureString input)
{
if (input == null) return null;
var encryptor = Injector.Container.GetInstance<ICryptFactory>().GetEncryptor(salt);
return encryptor.Encrypt(input.ToInsecureString());
}
但是,我并不真正想要对容器的依赖,但我不知道如何获取实例。
关于如何做到这一点的任何想法?
【问题讨论】:
-
为什么不直接将实例作为参数传递?
-
你是对的。有时明显的东西太明显了,看不到。
-
您的代码中存在安全漏洞。
salt似乎是一些静态常量,这是一个安全问题。 1. 密码应该是散列的,而不是加密的。 2. 每个哈希都应该有自己的盐;对每个密码使用相同的盐可以让攻击者查看哪些用户具有相同的密码。有关该主题的更多信息,请read this。 -
@Steven - 你是对的。但是,这不用于使用散列函数加密用户密码,而是通过 X509 证书加密配置文件中的值。
标签: c# .net dependency-injection ioc-container simple-injector