Reflection给我们的编程带来极大的便利,然而我们却往往会忽略掉这把双刃剑(同样锋利)的另外一面。By design, 只要你具有了相应的ReflectionPermission, Reflection 就允许你访问一个Assembly里中的所有Classes (包括NonPublic),也允许你访问一个Class中的所有Methods, Properties以及Fields(包括NonPublic)!

而在我们实际工作中,很多人从意识上都认为在面向对象的保护机制下,private member是别人无法访问的,因此如果我不允许别人访问我的某个member,只需要在其前面加上private就ok……殊不知在Reflection下面向对象的保护机制简直就是形同虚设,下面我们来看一个例子。

想象这样一种场景:

我有一个名为SecLib的Assembly,里面有一个公共的加密方法(Encrypt)和一个私有的解密方法(Decrypt),我的原意是只允许别人使用Encrypt来进行加密,而Decrypt只由我自己调用(由于这完全是一对紧密耦合的方法,把它们放在一个Assembly里面是很自然的事情):

public class SecLib
{
public static byte[] Encrypt(string s)
{
}

private static string Decrypt(byte[] d)
{
}
}

一个使用者拿到我的SecLib后,通过某种Reflection工具如Reflector,发现了我的SecLib里面的Decrypt方法。于是,接下来他虽然不能以如下方式直接调用Decrypt:

//string s = SecLib.Decrypt(d);

却可以通过Reflection来达到目的:

Type t = typeof(SecLib);
MethodInfo mi = t.GetMethod("Decrypt", BindingFlags.Static | BindingFlags.NonPublic);
string s = (string)mi.Invoke(null, new object[]{encryptedData});

下载该例子的完整代码:ReflectionTrap.zip

转载于:https://www.cnblogs.com/shensr/archive/2004/09/08/41011.html

Reflection带来的潜在威胁相关推荐

  1. 有限域f9的特征是多少_宽频域谐波的潜在威胁欠缺全面考虑,现有标准需进一步优化...

    电能作为使用最为广泛的二次能源,在支撑整个国民经济生产和发展中具有举足轻重的地位.电力谐波将导致电气设备寿命缩短.网损增大.电容器故障.计量误差.继电保护装置误动等诸多问题,是衡量电能质量问题的一个重 ...

  2. 云图说|威胁检测服务赐您“火眼金睛” ,让潜在威胁无处遁行

    阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要: 还在担心云上服务 ...

  3. 揭秘人工智能(系列):人工智能带来的网络安全威胁

    历史表明,网络安全威胁随着新的技术进步而增加.关系数据库带来了SQL注入攻击,Web脚本编程语言助长了跨站点脚本攻击,物联网设备开辟了创建僵尸网络的新方法.而互联网打开了潘多拉盒子的数字安全弊病,社交 ...

  4. 物联网给人类带来的潜在生命危险,我们必须重视起来

    近年来,随着物联网技术和互联网技术的日益发展,各种具有智能.自动.联网等智慧系统的研究已在全球范围内广泛开展,以汽车.船舶.电梯.机器人.家电等行业的智能化已经成为全球的大势所趋.未来10-20年各种 ...

  5. 浅谈云上攻防 --SSRF 漏洞带来的新威胁

    前言 在<浅谈云上攻防--元数据服务带来的安全挑战>一文中,生动形象的为我们讲述了元数据服务所面临的一系列安全问题,而其中的问题之一就是通过SSRF去攻击元数据服务:文中列举了2019年美 ...

  6. 2月第1周安全回顾:移动设备威胁增加 常用软件补丁密集

    本文同时发表在: [url]http://netsecurity.51cto.com/art/200902/109451.htm[/url] 本周(090201至090208)安全业界值得关注的新闻集 ...

  7. 盘点 | 假期里你错过的人工智能重要新闻有这些

    AI科技大本营导读:狗年的春节已过,想必现在很多读者都已经回到了学习或工作的状态,不然就是在回去的路上.节日期间大家忙着走亲串友,可能错过了一些人工智领域的最新消息,今天营长就为大家盘点一番. ▌20 ...

  8. 闻声识人时代将至?多家企业争相布局

    证明"我是我"是一个历久弥新的话题,近年来,生物识别技术迎来市场爆发,向商用和民用领域加速扩张:指纹识别在考勤.门锁.手机上普及:人脸识别在支付.安防.金融等领域颇有建树:安防.电 ...

  9. 雁栖湖会议研讨:计算机能代替程序员吗?

    来源:科学网 写不完的代码,熬不完的夜,进度总是赶不上变化.程序开发是一项既费时费力,又容易出错的工作.但当前持续涌现的软件工程大数据以及快速发展的人工智能技术,正使得软件自动化成为可能.通过程序合成 ...

最新文章

  1. c语言ctype中替换查找字符,c – std :: ctype是否总是按“C”语言环境对字符进行分类?...
  2. python多线程内存越要越大_Python 面试:这9个问题你一定要掌握!
  3. 测试build出来的dist文件夹是否编译成功
  4. Windows用管理员方式启动cmd (全面)
  5. Android Bundle类 学习总结
  6. 回帖赢好礼,让AI回应你的要求
  7. 2022年中国酒店业数字化转型趋势报告
  8. 常用技巧 —— 打表规律
  9. Linux shell中在vim打开的文件中查找关键字
  10. 我是如何查找RFC官方资料的
  11. Android RxBinding
  12. 打造最舒适的webview调试环境 1
  13. html5游戏开发教程实战 五子棋 四子棋 围棋 翻转棋四种对弈游戏,仅仅100行代码
  14. 如何快速实现高并发短文检索
  15. dell系统重装后无法进入系统_戴尔装win7后无法进入系统怎么办?戴尔装win7后进不了系统解决方法...
  16. 货捕头API接口,item_search - 根据关键词取商品列表
  17. 总结一下强化学习在工业界应用,给大家扩展一下思路(简易科普)
  18. 面试非常通用的四道送命题
  19. Bootstrap的基本使用方法介绍
  20. (20200208已解决)PyCharm中Tab键无效

热门文章

  1. 网站优化工作关键——稳定排名!
  2. 提升网站在搜索引擎中的排名需要技巧性操作
  3. r 字符串转化为数值_Lua 字符串处理
  4. 我的文档名字跟计算机名不一样,win10系统如何更改我的文档名称
  5. java轻量级并行工具类_16 个超级实用的 Java 工具类
  6. influx测试——单条读性能很差,大约400条/s,批量写性能很高,7万条/s,总体说来适合IOT数据批量存,根据tag查和过滤场景,按照时间顺序返回...
  7. Apache Samza流处理框架介绍——kafka+LevelDB的Key/Value数据库来存储历史消息+?
  8. codeforces 383D
  9. 【UER #8】打雪仗
  10. Linux发行版,分类,CentOS下载