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

【Python系列】Python 中`eval()`函数的正确使用及其风险分析

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

    • 一.使用示例
      • 正确使用
      • 错误使用
    • 二.基本用法
      • 1.`eval()`函数的基本用法
      • 2.引发`TypeError`的原因
      • 3.安全风险
      • 4.安全使用`eval()`的建议
    • 三.总结

一.使用示例

正确使用

values = eval('[9,10]')
print(f"values = {values},type = {type(values)}")

values = [9, 10],type = <class ‘list’>

错误使用

print(eval([9,10]))

TypeError: eval() arg 1 must be a string, bytes or code object

在这里插入图片描述

二.基本用法

1.eval()函数的基本用法

eval()函数接受一个字符串、字节串或者code对象作为参数,并将其作为 Python 代码执行。执行结果将被返回。例如,如果你想要计算两个数的和,可以将表达式作为字符串传递给eval()

expression = "9 + 10"
result = eval(expression)
print(result)  # 输出 19

2.引发TypeError的原因

在提供的示例中,eval()函数被错误地传入了一个列表[9, 10]。由于eval()期望的是一个字符串或字节串,而不是列表或其他对象,因此引发了TypeError。正确的做法是将列表转换为字符串形式,然后传递给eval()

# 将列表转换为字符串
expression = str([9, 10])# 使用eval()执行字符串表达式
values = eval(expression)
print(f"values = {values}, type = {type(values)}")

3.安全风险

尽管eval()在某些情况下非常有用,但它也带来了一些安全风险。以下是一些主要的安全考虑:

  1. 执行恶意代码:如果eval()执行的字符串来自不可信的源,比如用户输入,那么攻击者可以注入恶意代码,导致数据泄露、系统损坏或其他安全问题。

  2. 代码注入:攻击者可能利用eval()执行的代码来访问或修改程序的状态,包括读取敏感信息或执行未授权的操作。

  3. 性能问题eval()在执行时需要解析和编译传入的字符串,这可能会导致性能下降,尤其是在处理大量数据或高频调用时。

4.安全使用eval()的建议

为了安全地使用eval(),以下是一些建议:

  1. 避免使用用户输入:尽量不要使用eval()来执行用户输入的代码。如果必须使用,确保对输入进行严格的验证和清理。

  2. 使用限制的执行环境:如果可能,使用eval()在一个受限的环境中执行代码,比如使用restricted参数,或者在一个沙盒环境中。

  3. 使用替代方法:在许多情况下,可以使用更安全的替代方法,比如使用内置函数如sum(),或者手动编写代码来实现所需功能。

  4. 代码审查:在使用eval()的情况下,确保代码经过严格的审查,以避免潜在的安全漏洞。

  5. 更新和维护:保持 Python 环境和库的最新状态,以利用最新的安全特性和修复。
    在这里插入图片描述

三.总结

eval()是一个功能强大的工具,但使用时必须非常小心。了解其工作原理和潜在的风险是确保安全使用的关键。通过遵循上述建议,可以在享受eval()带来的便利的同时,最大限度地减少安全风险。

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img

相关文章:

【Python系列】Python 中`eval()`函数的正确使用及其风险分析

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...

使用Spring Boot开发应用:基于请求参数MD5的缓存键及其他缓存方式

本文将介绍如何在Spring Boot应用中实现基于请求参数MD5的缓存键&#xff0c;以及其他常见的缓存方式。通过实际代码示例&#xff0c;展示如何应用这些技术优化系统性能。 1. 引入必要的依赖 首先&#xff0c;在Spring Boot项目中引入缓存相关的依赖。修改pom.xml文件&#x…...

typescript中interface常见3种用法

文章目录 函数类型对象类型【自命名】&#xff1a; (函数)对象类型 函数类型 作用&#xff1a;声明一个函数接口&#xff1a;可用于类型声明 | 不可implements 对象类型 作用&#xff1a;声明对象具备哪些实例接口&#xff1a;可用于类型 | 可implements 【自命名】&…...

windows10 安装CUDA教程

如何在windows10系统上安装CUDA? 1、查看电脑的NVIDIA版本 nvidia-smi 2、官网下载所需CUDA版本 官网地址:https://developer.nvidia.com/cuda-toolkit-archive 我们所安装的CUDA版本需要小于等于本机电脑的NVIDIA版本。推荐使用迅雷下载,速度会更快哦。 3、安装步骤...

计算机毕业设计选题推荐-某炼油厂盲板管理系统-Java/Python项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

PSO求解函数最小值的MATLAB例程|MATLAB源代码

本篇文章适合PSO入门&#xff0c;进阶的可能会觉得太简单的。 目录 PSO例程作用运行结果代码函数解释 例程修改tips PSO Particle Swarm Optimization&#xff0c;粒子群优化算法&#xff0c;通过模拟鸟群或鱼群的行为来寻找最优解。在计算时通过对一群粒子的位置和速度进行迭…...

scrapy 爬取旅游景点相关数据(一)

配套视频可以前往B站&#xff1a;麦麦大数据 项目目标: 爬取的是穷游旅游景点列表 、评论数据 &#x1f4ca; 章节&#xff1a; &#x1f606; Scrapy 爬取旅游景点相关数据&#xff08;一&#xff09; &#x1f606; Scrapy 爬取旅游景点相关数据&#xff08;二&#xff09; &…...

构建铁塔基站安全防护网:视频AI智能监控技术引领智慧化转型

一、背景现状 随着通信技术的快速发展&#xff0c;铁塔基站作为重要的通信基础设施&#xff0c;其安全、稳定、高效的运行对于保障通信网络的畅通至关重要。然而&#xff0c;铁塔基站大多分布在公路边、高山、野外等区域&#xff0c;巡检难度大&#xff0c;维护效率低&#xf…...

Java中的分布式缓存:Ehcache与Hazelcast

Java中的分布式缓存&#xff1a;Ehcache与Hazelcast 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Java中的两种分布式缓存技术&#xff1a;Ehcache与Hazelcast。分布式缓存可以显…...

前端开发工程师的薪资,主要取决于哪3个方面?

作者&#xff1a;清水束竹 从2022年开始&#xff0c;互联网行业的就业情况就不容乐观了。 最明显的三个表现:裁员、缩招、降薪。 其实2021-2022年年中那段时间&#xff0c;互联网企业出现了一波假性繁荣。 某些大厂Q大量招聘应届毕业生&#xff0c;宣传铺天盖地&#xff0c;不…...

springboot美食网站—计算机毕业设计源码11574

摘 要 随着人们生活水平的提高&#xff0c;人们对美食的要求也越来越高&#xff0c;对各类美食信息需求越来越大。因此&#xff0c;结合计算机快速发展、普及&#xff0c;在此基础上制作一个页面简单、美观,功能实用的美食网站势在必行&#xff0c;满足用户分享美食的需求。 美…...

WordPress建站:如何使用ChemiCloud搭建外贸独立站

以前自行搭建一个网站&#xff0c;不懂一点技术那是很难完成的&#xff0c;现如今WordPress的出现极大地降低了搭建网站的技术门槛&#xff0c;不需要懂任何代码&#xff0c;只需按步骤操作就行。WordPress 是一个非常流行的开源内容管理系统&#xff08;CMS&#xff09;&#…...

在 Vim 编辑器中,如果某个单词被意外地高亮显示,使用:noh可以取消高亮显示

文章目录 1、问题出现的背景2、解决办法 1、问题出现的背景 配置镜像加速器&#xff0c;修改 /etc/docker/daemon.json 目录下的文件&#xff0c;不小心高亮显示https&#xff0c;产生问题的步骤是&#xff0c;我先是按esc键退出vim的编辑模式&#xff0c;然后在https的前面按…...

一条命令安装mysql,php

一条命令安装mysql&#xff0c;php&#xff0c;wget http://soft.vpser.net/lnmp/lnmp1.5.tar.gz -cO lnmp1.5.tar.gz && tar zxf lnmp1.5.tar.gz && cd lnmp1.5 && ./install.sh lnmp...

配置maven环境

一、把maven文件下载到D盘下 二、创建一个maven文件夹&#xff0c;并在其中创建一个repository文件夹 三、桌面右键单击属性设置&#xff0c;搜索环境 添加MAVEN HOME变量&#xff0c;让然后把apache-maven路径下的bin文件的路径复制进来 用记事本或者NotePad打开下图路径的set…...

飞书打卡 快捷指令

使用快捷指令定时飞书打卡 在网上找了一圈&#xff0c;只有钉钉打卡的快捷指令&#xff0c;但是公司换飞书&#xff0c;哪个打工人不怕忘记打卡呢&#xff0c;所以自己研究了一下&#xff0c;其实也很简单。 找url 问题的最关键是打开飞书的打卡界面 如果只是打开飞书APP 很…...

LeYOLO,一种用于目标检测的新型可扩展且高效的CNN架构

摘要 在目标检测中&#xff0c;深度神经网络的计算效率至关重要&#xff0c;尤其是随着新型模型越来越注重速度而非有效计算量&#xff08;FLOP&#xff09;。这一发展趋势在某种程度上忽视了嵌入式和面向移动设备的AI目标检测应用。在本文中&#xff0c;我们基于FLOP关注于高…...

docker安装phpMyAdmin

直接安装phpMyAdmin需要有php环境&#xff0c;比较麻烦&#xff0c;总结了使用docker安装方法&#xff0c;并提供docker镜像。 1.docker镜像 见我上传的docker镜像&#xff1a;https://download.csdn.net/download/taotao_guiwang/89595177 2.安装 1).加载镜像 docker load …...

举例详细学习和分析后端业务逻辑代码开发思路

在此之前&#xff0c;先来补充一下上一篇文章的一点内容&#xff1a;上一篇文章点击此处详看 对于画线的这句话&#xff0c;来详细解释一下吧&#xff01; 这里面说&#xff0c;对于service服务层&#xff0c;如果我们所需要实现的业务比较简单的话可以直接在...service接口里面…...

面试经典算法150题系列-数组/字符串操作之轮转数组

序言&#xff1a;今天是算法系列的第六题啦&#xff0c;无需多说&#xff0c;上题&#xff01; 轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...