自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

專家提醒 Perl腳本中的安全隱患

開發(fā) 架構(gòu)
你對(duì)Perl語言中Perl腳本的概念了解多少?這里向大家簡單介紹一下Perl腳本中的一些安全問題,希望本文的介紹能讓你有所收獲。

本文和大家重點(diǎn)討論一下Perl腳本中的一些安全問題,幾乎每一種編程語言都有一定這樣的漏洞,這種漏洞將會(huì)在某種程度上導(dǎo)致不安全軟件的產(chǎn)生,Perl也有它安全上令人擔(dān)憂的部分,然而大多數(shù)程序員完全沒有意識(shí)到這些方面。

Perl腳本中的一些安全問題

對(duì)一種編程語言而言,在設(shè)計(jì)這種語言的時(shí)候,一般是不會(huì)產(chǎn)生安全隱患的,事實(shí)上,這種隱患是由程序員引入的。幾乎每一種編程語言都有一定這樣的漏洞,這種漏洞將會(huì)在某種程度上導(dǎo)致不安全軟件的產(chǎn)生,但是一個(gè)如軟件整體的安全性仍然大部分依賴于這個(gè)軟件制造者的知識(shí)面、理解能力和他的安全意識(shí)。Perl也有它安全上令人擔(dān)憂的部分,然而大多數(shù)程序員完全沒有意識(shí)到這些方面。
在這篇文章里,我們將會(huì)看一下Perl中一些最普遍被誤用和忽視的屬性。我們將會(huì)看到它們的誤用將會(huì)怎樣對(duì)運(yùn)行它們的系統(tǒng)的安全以及它們的用戶造成威脅。我們將會(huì)演示怎樣把這些弱點(diǎn)挖掘出來以及如何去修改、避免它們。

用戶輸入上的弱點(diǎn)

Perl腳本中產(chǎn)生安全問題的一個(gè)很大的來源是沒有經(jīng)過正確確認(rèn)(或根本就沒有確認(rèn))的用戶的輸入。每次當(dāng)你的程序要從一個(gè)不信任用戶那里獲取輸入信息的時(shí)候,即使采用的是非直接的方式,你都應(yīng)該小心。舉個(gè)例子來說吧,如果你在Perl中寫CGI腳本,你要預(yù)期到惡意的用戶將會(huì)發(fā)送給你假的輸入。不正確的用戶輸入,如果沒有經(jīng)過確認(rèn)就被認(rèn)可并使用了,將會(huì)導(dǎo)致許多方面出錯(cuò)。最常見和明顯的錯(cuò)誤是,沒有經(jīng)過確認(rèn)就去執(zhí)行有用戶自定義參數(shù)的其他程序。

syetem()和exec()函數(shù)

Perl腳本以能被用作一種“粘合”語言而著稱——它能夠通過如下方式完成一個(gè)出色的工作:在調(diào)用其他程序來為它工作的時(shí)候,通過采集一個(gè)程序的輸出,將它重新格式成一種特定的方式后傳遞到其他程序的輸入的方式仔細(xì)的協(xié)調(diào)它們的運(yùn)行。這樣各個(gè)程序就能很好的運(yùn)行了。
正如Perl發(fā)布標(biāo)語告許我們的,我們有不止一種方法可以做同樣的事。一種執(zhí)行一個(gè)外部程序和一個(gè)系統(tǒng)命令的方法事通過調(diào)用exec()函數(shù)。當(dāng)Perl遇到一個(gè)exec()語句的時(shí)候,它審視exec()被調(diào)用處的參數(shù),然后啟動(dòng)一個(gè)新的進(jìn)程來執(zhí)行這條特定的命令。Perl腳本從不會(huì)返回控制給調(diào)用exec()的原來的那個(gè)進(jìn)程。

另一個(gè)相似的函數(shù)是system()。system()的運(yùn)行方式非常象exec()。它們之間的唯一的大的區(qū)別是Perl會(huì)首先從父進(jìn)程中分叉出一個(gè)子進(jìn)程,子進(jìn)程作為提供給system()的一個(gè)參數(shù)。父進(jìn)程等到子進(jìn)程結(jié)束運(yùn)行后再接著運(yùn)行程序的其余部分。我們將會(huì)在下面更詳細(xì)的討論system()調(diào)用,但這些討論大部分也適用于exec()。
傳遞給system()的參數(shù)是一個(gè)列表——列表里的第一個(gè)元素是要被執(zhí)行的這個(gè)程序的程序名,其他元素是傳給這個(gè)程序的參數(shù)。然而,如果只有一個(gè)參數(shù)的的話,system()的執(zhí)行方式會(huì)發(fā)生差異。在那種情形下,Perl將會(huì)掃描這個(gè)參數(shù)看它是不是包含任何shell轉(zhuǎn)換字符。如果有的話,它就要把這些字符通過shell來解釋。所以產(chǎn)生一個(gè)shell命令行來工作。不然,Perl會(huì)降字符串拆成單詞然后調(diào)用效率更高的c庫函數(shù)execvp(),這個(gè)函數(shù)不能理解特殊的shell字符。

現(xiàn)在假設(shè)我們有一張CGI表單,它要詢問用戶名,然后顯示包含這個(gè)用戶統(tǒng)計(jì)信息的一個(gè)文件。我名可以如下使用system()來調(diào)用’cat’實(shí)現(xiàn)那種要求:
system("cat/usr/stats/$username");
用戶名來自這樣的一個(gè)表單:
$username=param("username");
.舉個(gè)例子,當(dāng)用戶在表單里添上username=jdimov,然后提交后。Perl在字符串``cat/usr/stats/jdimov中沒有找到任何轉(zhuǎn)換字符創(chuàng),所以它就調(diào)用execvp()函數(shù)運(yùn)行”cat”后返回到我們的腳本中。這個(gè)Perl腳本也許看起來沒有害處可言,但是它容易被一個(gè)惡意的攻擊者所利用。

【編輯推薦】

  1. 使用PERL腳本生成PDF輸出
  2. 學(xué)習(xí)筆記 Perl腳本的特點(diǎn)
  3. 解析四大Perl操作符用法
  4. 淺談配置Eclipse支持Perl腳本開發(fā)
  5. Perl標(biāo)量轉(zhuǎn)換函數(shù)用法指南
責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-01-15 11:19:49

卡巴斯基安全隱患

2011-05-05 18:28:18

2010-09-17 14:29:23

2016-09-29 22:09:26

2017-02-24 08:11:09

Docker數(shù)據(jù)安全容器

2009-07-06 13:38:02

2012-06-25 09:18:36

2012-03-28 14:50:40

2014-04-14 13:19:41

初志科技電子文檔

2022-01-20 10:54:23

移動(dòng)手機(jī)短信驗(yàn)證碼隱患

2013-02-21 10:11:58

2009-03-17 09:48:00

2023-12-25 11:55:58

2009-09-07 16:56:02

2019-07-23 08:56:46

IoT物聯(lián)網(wǎng)安全

2014-07-03 11:01:13

mongoDB安全隱患

2010-09-30 16:26:06

2011-04-13 13:54:03

HttpClient

2010-06-09 15:55:20

FTP文件傳輸協(xié)議

2010-04-19 23:46:16

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)