当前位置: 首页 > news >正文

Python eval安全隐患

代码注入等威胁
1、锁屏

importosprint(os.system('rundll32.exe user32.dll,LockWorkStation'))

2、eval注入风险

importastimportreimportplatformdefget_lock_command():"""根据当前操作系统返回对应的锁屏命令"""os_type=platform.system()ifos_type=="Windows":# Windows 锁屏命令return"rundll32.exe user32.dll,LockWorkStation"elifos_type=="Linux":# Linux GNOME桌面环境锁屏命令return"gnome-screensaver-command -l"elifos_type=="Darwin":# macOS 锁屏命令return"pmset displaysleepnow"else:return"echo 不支持的操作系统"deftest_safe_eval():print("="*50)print("1. 危险操作:使用 eval()")print("="*50)# 正常输入normal_input="1 + 2 * 3"print(f"输入: '{normal_input}'")print(f"eval 结果:{eval(normal_input)}")# 恶意输入(修改为锁屏指令)lock_cmd=get_lock_command()malicious_input=f"__import__('os').system('{lock_cmd}')"print(('echo你的电脑已被黑客控制!'))print(f"\n输入: '{malicious_input}'")try:#警告:这行代码会真的执行系统锁屏命令!eval(malicious_input)exceptExceptionase:print(f"执行出错:{e}")print("\n"+"="*50)print("2. 安全替代方案:使用 ast.literal_eval()")print("="*50)# 正常输入(注意:它只能解析Python的字面量,不能做数学运算)safe_input="{'name': 'Alice', 'age': 25}"print(f"输入: '{safe_input}'")try:result=ast.literal_eval(safe_input)print(f"literal_eval 结果:{result}(类型:{type(result).__name__})")exceptExceptionase:print(f"执行出错:{e}")# 恶意输入print(f"\n输入: '{malicious_input}'")try:ast.literal_eval(malicious_input)exceptValueErrorase:print(f"拦截成功!报错信息:{e}")print("\n"+"="*50)print("3. 如果需要计算数学表达式怎么办?")print("="*50)math_expr="1 + 2 * 3"print(f"输入: '{math_expr}'")# 使用正则表达式进行严格白名单校验# 只允许数字、加减乘除、小数点和空格ifre.match(r'^[\d\s\+\-\*\/\.]+$',math_expr):# 校验通过后,再使用 eval 就是安全的print(f"正则校验通过,eval 结果:{eval(math_expr)}")else:print("包含非法字符,拒绝执行!")if__name__=="__main__":test_safe_eval()
http://www.jsqmd.com/news/1402246/

相关文章:

  • 茶叶质量分级分类与检测数据集 使用EfficientNet作为基础模型 来训练茶叶质量分级分类与检测数据集模型 茶叶检测及分类数据集的训练
  • Excel RANDBETWEEN函数制作小学数学随机题库:从原理到自动批改
  • AFSim助手再再再再再再升级!
  • IEEE 754浮点数与十六进制转换:原理、代码实现与避坑指南
  • 太空算力网络:分布式计算新范式与AI算力瓶颈的破局思路
  • 「安卓framework基础篇7」从WMS到BufferQueue第一篇 - WMS层级树的初始化过程(基于AOSP13)
  • 定制板多网口怎么做?我从 Switch、NIC、PHY 到 Linux 的一次实战梳理
  • 热力图点亮坚持:ArkUI 日历热力图让鸿蒙打卡页一眼见自律
  • 定义每个科目组配置的合作伙伴角色 和 分配合作伙伴方案给账户组 这两处 感觉做的事情是一样的 为何要开发这些? 有何作用 原理
  • Ollama v0.18.1 深度解析:联网搜索、无头模式与基准测试实战指南
  • 2026玻璃花房铜槽供货商口碑推荐强势出炉,零套路不踩坑,选购看这篇就够 - mypinpai
  • MathType花体字母输入全攻略:从原理到兼容性实战
  • Minecraft Java版与基岩版深度对比:版本选择、模组生态与跨平台联机指南
  • Office Tool Plus:自定义部署与管理Office的终极指南
  • Obsidian LaTeX公式高效输入:插件配置与实战技巧
  • ESP32-S3 MultiNet新增离线语音指令完整教程:Command ID、拼音注册与动作映射
  • 2026降AI率工具红黑榜:降AI率平台怎么选?一文讲透
  • 2026四川乌兹别克斯坦公司注册公证认证,十大出证品牌深度测评,所见即所得不踩雷 - mypinpai
  • Three.js 交互式 3D 人体解剖开源项目
  • Python实战:从零构建钢筋混凝土柱PMM相互作用图计算与可视化工具
  • Science Robotics 封面论文:ZEST零样本具身技能转移技术框架,教会Atlas跳霹雳舞、爬箱子、后空翻
  • 2026四大AI写论文工具深度横评|从降重到润色,各有所长别盲选
  • 深入解析ILMerge:.NET程序集合并原理、实战与替代方案
  • 蚂蚁集团Ling 3.0 Tiny开源MoE大模型:79亿参数本地部署实战指南
  • Nginx主动健康检查
  • 2026年道路消火栓施工方网址,室外消火栓/地上消火栓/地下消火栓/市政消火栓/智慧消火栓,消火栓设备厂家推荐 - 企业权威推荐大使
  • 每天认识一种投资品类:牛熊证
  • 2026 年现阶段明山知名的豆包获客效果怎么样/新店快速拿到客源平台选哪家,开新店还在蹲客源?这玩意儿能帮你搞定,难怪同行都悄悄用!-抖能发网络科技 - 行业推荐官[官方】--
  • CarSim 2021.0 完整安装、破解与Simulink联合仿真环境搭建指南
  • Ansys Maxwell自定义材料库创建与管理全攻略:从B-H曲线到团队协作