成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于Python漏洞挖掘那些不得不提的事兒

安全 漏洞
Python雖然其明顯的語言清晰度和使用友好度使得軟件工程師和系統管理員放下了戒備,但是他們的編碼錯誤還是有可能會帶來嚴重的安全隱患。

[[172439]]

前言

Python因其在開發更大、更復雜應用程序方面獨特的便捷性,使得它在計算機環境中變得越來越不可或缺。雖然其明顯的語言清晰度和使用友好度使得軟件工程師和系統管理員放下了戒備,但是他們的編碼錯誤還是有可能會帶來嚴重的安全隱患。

這篇文章的主要受眾是還不太熟悉Python的人,其中會提及少量與安全有關的行為以及有經驗開發人員遵循的規則。

輸入函數

在Python2強大的內置函數中,輸入函數完全就是一個大的安全隱患。一旦調用輸入函數,任何從stdin中讀取的數據都會被認定為Python代碼:

$ python2

>>> input()

dir()

['__builtins__', '__doc__', '__name__', '__package__']

>>> input()

__import__('sys').exit()

$

顯然,只要腳本stdin中的數據不是完全可信的,輸入函數就是有危險的。Python 2 文件將 raw_input 認定為一個安全的選擇。在Python3中,輸入函數相當于是 raw_input,這樣就可以完全修復這一問題。

assert語句

還有一條使用 assert 語句編寫的代碼語句,作用是捕捉 Python 應用程序中下一個不可能條件。

def verify_credentials(username, password):

assert username and password, 'Credentials not supplied by caller'

... authenticate possibly null user with null password ...

然而,Python在編譯源代碼到優化的字節代碼 (如 python-O) 時不會有任何的assert 語句說明。這樣的移除使得程序員編寫用來抵御攻擊的代碼保護都形同虛設。

這一弱點的根源就是assert機制只是用于測試,就像是c++語言中那樣。程序員必須使用其他手段才能確保數據的一致性。

可重用整數

在Python中一切都是對象,每一個對象都有一個可以通過 id 函數讀取的唯一標示符。可以使用運算符弄清楚是否有兩個變量或屬性都指向相同的對象。整數也是對象,所以這一操作實際上是一種定義:

>>> 999+1 is 1000

False

上述操作的結果可能會令人大吃一驚,但是要提醒大家的是這樣的操作是同時使用兩個對象標示符,這一過程中并不會比較它們的數值或是其它任何值。但是:

>>> 1+1 is 2

True

對于這種行為的解釋就是Python當中有一個對象集合,代表了最開始的幾百個整數,并且會重利用這些整數以節省內存和對象創建。更加令人疑惑的就是,不同的Python版本對于“小整數”的定義是不一樣的。

這里所指的緩存永遠不會使用運算符進行數值比較,運算符也專門是為了處理對象標示符。

浮點數比較

處理浮點數可能是一件更加復雜的工作,因為十進制和二進制在表示分數的時候會存在有限精度的問題。導致混淆的一個常見原因就是浮點數對比有時候可能會產生意外的結果。下面是一個著名的例子:

>>> 2.2 * 3.0 == 3.3 * 2.0

False

這種現象的原因是一個舍入錯誤:

>>> (2.2 * 3.0).hex()

'0x1.a666666666667p+2'

>>> (3.3 * 2.0).hex()

'0x1.a666666666666p+2'

另一個有趣的發現就是Python float 類型支持無限概念。一個可能的原因就是任何數都要小于無限:

>>> 10**1000000 > float('infinity')

False

但是在Python3中,有一種類型的對象不支持無限:

>>> float > float('infinity')

True

一個最好的解決辦法就是堅持使用整數算法,還有一個辦法就是使用十進制內核模塊,這樣可以為用戶屏蔽煩人的細節問題和缺陷。

一般來說,只要有任何算術運算就必須要小心舍入錯誤。詳情可以參閱 Python 文檔中的《發布和局限性》一章。

責任編輯:趙寧寧 來源: Hackdig
相關推薦

2019-11-14 15:38:46

AndroidRelease項目

2017-08-10 16:54:47

MySQL優化MySQL

2010-02-24 11:20:23

C#

2022-10-27 09:55:00

2010-08-27 10:37:43

無線標準WAPI

2012-10-31 10:07:00

JS前端Web

2012-10-31 10:36:17

js前端JavaScript頁面構建

2011-04-27 10:31:29

兼容墨盒用戶體驗

2012-09-26 15:03:22

Windows 8

2018-07-20 22:22:21

紅帽混合云API

2016-12-06 16:24:36

微軟量子計算

2017-05-17 14:46:22

容器DockerLinux

2022-09-19 09:23:34

Linux命令

2019-12-24 14:04:59

PythonExcel數據處理

2017-11-21 09:01:59

Java編程技術

2010-11-02 14:51:11

職場

2019-11-27 14:20:27

Redis數據庫C語言

2024-03-20 17:16:09

人形機器人黃仁勛3D

2009-06-26 11:01:38

new和delete

2020-06-15 08:19:00

ZooKeeperEureka
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 你懂的av| 国产美女精品视频免费观看 | 国产精品久久久久久久午夜 | 特黄色一级毛片 | 深夜爽视频 | 亚洲视频在线免费 | 成人动漫一区二区 | 99久久精品国产毛片 | 免费视频二区 | 日韩精品在线观看网站 | 成人日韩精品 | 亚洲一级淫片 | 日韩视频在线观看一区二区 | 爱爱视频在线观看 | 国产免费xxx | 久草热在线 | 天堂av免费观看 | 亚洲一级在线 | 欧美精品一区二区免费 | 91欧美精品成人综合在线观看 | 中文字幕一区二区三区四区五区 | 久久亚洲春色中文字幕久久久 | 亚洲一区 中文字幕 | 成人亚洲一区 | 日韩视频区 | 日韩小视频 | 国产精华一区 | 五月激情婷婷六月 | 涩在线| 国产成人精品免费 | 欧美视频1| 国产在线精品一区二区三区 | 看亚洲a级一级毛片 | 四虎影院在线观看av | 视频二区| 区一区二区三在线观看 | 久久久久久国产精品免费免费 | 国产精品99久久久久久久久 | 国产精品久久国产精品 | 亚洲激情一区二区 | 精品美女视频在线观看免费软件 |