作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
事实上,私有(private)方法是在C#中实现的,仍然可以通过Reflection
进行搜索。
我要做的是编写public string Encrypt(string data)
和private string Decrypt(string cipher)
方法来进行加密和解密。
不幸的是,如果有人知道 .NET 框架,他可以使用 Reflection
找到 Decrypt
方法,它会解密所有加密的内容。
看来这不是那么安全。所以我想将Decrypt
方法变成真正私有(private)方法。
但是怎么做呢?
悉尼时间 2012 年 1 月 9 日晚上 10:52 更新
bdares 提供了这个问题的技术解释
Eric Lippert 提供了这个问题的政治解释
感谢两位专家!
最佳答案
你不能。如果攻击者可以访问您的代码、编译代码或源代码,他就可以跟踪您的程序并找到它在哪里被加密或解密。
您可以通过将 key 存储在单独的位置来增加一层安全性,但通常如果攻击者在您的服务器上执行代码,您就已经完蛋了。
(如果攻击者正在您的服务器上执行代码,您只需要担心这一点,否则该方法是否私有(private)并不重要。此外,他不能使用反射来查找方法名称,除非他是在您的服务器上执行代码。简而言之:您在这里担心的是错误的事情。)
关于c# - 如何在C#中写一个 "truly"私有(private)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8784557/
我是一名优秀的程序员,十分优秀!