Python:eval的妙用和濫用

?

eval()函數十分強大,官方demo解釋為:將字符串str當成有效的表達式來求值并返回計算結果。

so,結合math當成一個計算器很好用。

其他用法,可以把list,tuple,dict和string相互轉化。見下例子:

a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"b = eval(a)b
Out[3]: [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]type(b)
Out[4]: lista = "{1: 'a', 2: 'b'}" b = eval(a) b Out[7]: {1: 'a', 2: 'b'} type(b) Out[8]: dict a = "([1,2], [3,4], [5,6], [7,8], (9,0))" b = eval(a) b Out[11]: ([1, 2], [3, 4], [5, 6], [7, 8], (9, 0))

不可謂不強大!

BUT!強大的函數有代價。安全性是其最大的缺點。

想一想這種使用環境:需要用戶輸入一個表達式,并求值。

如果用戶惡意輸入,例如:

__import__('os').system('dir')

那么eval()之后,你會發現,當前目錄文件都會展現在用戶前面。

那么繼續輸入:

open('文件名').read()

代碼都給人看了。獲取完畢,一條刪除命令,文件消失。哭吧!

怎么避免安全問題?

1、自行寫檢查函數;

2、使用ast.literal_eval: 自行查看DOCUMENT

3、更多好文: Restricted "safe" eval(Python recipe)

本文由@The_Third_Wave(Blog地址: http://blog.csdn.net/zhanh1218 )原創。還有未涉及的,會不定期更新,有錯誤請指正。

如果你看到這篇博文時發現沒有不完整,那是我為防止爬蟲先發布一半的原因,請看原作者Blog。

如果這篇博文對您有幫助,為了好的網絡環境, 不建議轉載,建議收藏! 如果您一定要轉載,請帶上后綴和本文地址。

轉載于:https://www.cnblogs.com/webRobot/p/6222861.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253641.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253641.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253641.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

程維柳青發布道歉聲明:滴滴順風車業務將無限期下線

雷鋒網(公眾號:雷鋒網)消息,8 月 28 日晚間,滴滴創始人兼 CEO 程維和滴滴總裁柳青正式發出道歉聲明,向受害者和受害者家屬道歉——這已經離本次滴滴順風車悲劇的發生整整四天的時間。 聲明表示,滴滴不再以規模和增長作…

MATLAB圖像增強程序舉例

1.灰度變換增強程序: % GRAY TRANSFORM clc; Iimread(pout.tif); imshow(I); Jimadjust(I,[0.3 0.7],[0 1],1); %transforms the walues in the %intensity image I to values in J by linealy mapping %values between 0.3 and 0.7 to values between 0 and 1. fi…

Design Compiler指南——設計綜合過程

在前面一章介紹完施加約束之后,接下來要做的工作就是將設計進行綜合編譯(compile),本文我們將主要討論綜合編譯的過程。主要分為這樣幾個部分: 優化的三個階段及其特點編譯的策略編譯層次化的設計 一、優化的三個階段 這一節我們介紹Design …

How to find Material based on Sales Organization and Distribution Channel

Fetch data from Database View /BEV1/RBEA_V Fields: VKORG - Sales Organization VTWEG - Distribution Channel MATNR - Material Number 轉載于:https://www.cnblogs.com/JulietLV/p/7436028.html

iOS開發 iOS10兼容訪問http

添加NSAppTransportSecurity的字典會自動變成 AppTransportSecurity再添加 allow Arbitary Loads Boolean YES轉載于:https://www.cnblogs.com/diweinan/p/6233052.html

django 利用PIL 保存圖片

在使用django時不知道怎么保存圖片,又不想用它的form ,在網上找了許久,終于找到個解決方案,利用PIL.image 將POST上來的圖片保存到media目錄下,然后再修改models from PIL import Imagescreen_name request.POST.get(…

圖像轉灰度圖

MyYuanLaiPic imread(e:/image/matlab/darkMouse.jpg);%讀取RGB格式的圖像 MyFirstGrayPic rgb2gray(MyYuanLaiPic);%用已有的函數進行RGB到灰度圖像的轉換 [rows , cols , colors] size(MyYuanLaiPic);%得到原來圖像的矩陣的參數 MidGrayPic zeros(rows , cols);…

Design Compiler指南——后綜合過程

本文我們著重討論使用Design Compiler綜合大型設計時要注意的一些問題,比如怎樣調整綜合方法,出現約束違反后怎樣修正,怎樣給不同的子模塊作時序和負載預算,以及給整個設計在具體綜合之前先作一個預估(Design Exploration)等等。 …

web worker原理 SSE原理

第一部分 什么是 web worker? 我們一直強調JavaScript是單線程的,但是web worker的出現使得JavaScript可以在多線程上跑,只是web worker本身適合用于一些復雜的、耗費cpu的運算,不能操作window、document、parent對象&#xff0c…

如何尋回xp盤符丟失的數據

分區丟失是比較常見的數據恢復案例,需要注意,分區丟失后不要再重建新的分區。保護好資料丟失現場,可以最大程度的恢復出資料。具體的恢復方法看正文了解。 工具/軟件:星空數據恢復軟件 步驟1:先百度搜索并下載程序打開…

afx_msg函數意思

應用程序框架產生的消息映射函數 例如:afx_msg void OnBnClickedButton1(); 其中 afx_msg為消息標志,它向系統聲明:有消息映射到函數實現體; 而在map宏定義中,就有具體消息和此函數的映射定義(可以是自定義…

文件得編碼和文件名的編碼是不一樣的

1.新知識,通過文件后墜名的編碼判斷文件類型,可以有效的防止腳本文件偽裝為正常得文件。 2.攔截器和過濾器。 過濾器只能夠在http請求和回復的時候進行處理。 但是攔截器可以在很多地方攔截,例如程序拋異常等都可以捕獲的到。還可以進行權限得…

Visual computing——概述

Visual Computing(視覺計算)是所有處理二維圖像和三維模型的計算機科學學科的總稱,即計算機圖形學、圖像處理、可視化、計算機視覺、虛擬和增強現實、視頻處理,但也包括模式識別、人機交互、機器學習等方面。核心挑戰是視覺信息&a…

推薦!手把手教你使用Git

一:Git是什么? Git是目前世界上最先進的分布式版本控制系統。 二:SVN與Git的最主要的區別? SVN是集中式版本控制系統,版本庫是集中放在中央服務器的,而干活的時候,用的都是自己的電腦&#xff0…

I2C協議學習

I2C Bus(Inter-Integrated Circuit Bus) 最早是由Philips半導體(現被NXP收購)開發的兩線式串行總線,常用于微控制器與外設之間的連接。 一、概述 以下是 I2C 總線的一些特性: 只需要兩條總線;一條串行數據線 (SDA) 和…

ajax的簡單介紹

響應主體,就是服務器給我們返回的結果內容(瀏覽器里的responsive) 請求主體,是我們給服務器的數據 輸入域名發起一次請求,得到的可能是標簽,標簽可能還要在發一次請求 post怎么發請求:form表單 …

DM365 color space

YUV的幾種格式 420P:420P數據的存放方式一般是先存放Y,然后存放U,最后存放V的數據,每一個像素使用12bits(1.5BYTE)保存。 422P:422P數據的存放方式也是先存放Y,然后存放U,最后存放V的數據&…

JavaScript 標準參考教程-閱讀總結(三)

1、DOM模型 DOM 是 JavaScript 操作網頁的接口,全稱為“文檔對象模型”(Document Object Model)。它的作用是將網頁轉為一個 JavaScript 對象,從而可以用腳本進行各種操作(比如增刪內容)。 1)do…

P1136 迎接儀式

P1136 迎接儀式 題目描述 LHX教主要來X市指導OI學習工作了。為了迎接教主,在一條道路旁,一群Orz教主er穿著文化衫站在道路兩旁迎接教主,每件文化衫上都印著大字。一旁的Orzer依次擺出“歡迎歡迎歡迎歡迎……”的大字,但是領隊突然…

云服務器 VNC 遠程連接

此服務器買來是為了搭建IC EDA云的,因此選用的是centOS 6的環境,對各EDA軟件兼容較好。本人手頭拮據,因此買的是騰訊云活動期間的云服務器,只能說夠用吧。 一、桌面安裝 在云服務器控制臺登陸上遠程主機,依次執行下列…