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

緩解SQL注入威脅的三種方法

安全 應(yīng)用安全
即使是大型科技公司,依然會(huì)被軟件和Web漏洞所困擾,其中SQL 注入是常見也是最危險(xiǎn)的漏洞之一。以下是降低SQL注入漏洞風(fēng)險(xiǎn)的三大方法。

即使是大型科技公司,依然會(huì)被軟件和Web漏洞所困擾,其中SQL 注入是常見也是最危險(xiǎn)的漏洞之一。在MITRE近日發(fā)布的過去兩年中最常見和最危險(xiǎn)的25個(gè)軟件漏洞列表(見下圖)中,SQL注入漏洞的排名高居第六:

以下是降低SQL注入漏洞風(fēng)險(xiǎn)的三大方法:

零信任方法

首先確??蛻舳溯斎腧?yàn)證不是唯一的防線。這種驗(yàn)證是改善用戶體驗(yàn)的好工具,但它不能作為一種安全機(jī)制。因?yàn)?,通過更改瀏覽器中加載的JavaScript代碼,或使用導(dǎo)致SQL注入的參數(shù)對(duì)客戶端-服務(wù)器架構(gòu)中的后端進(jìn)行基本HTTP調(diào)用,可以輕松刪除客戶端驗(yàn)證。

所以開發(fā)人員應(yīng)該在服務(wù)器端進(jìn)行驗(yàn)證,且盡可能靠近源;開發(fā)人員還應(yīng)該仔細(xì)考慮數(shù)據(jù)庫(kù)用戶權(quán)限,所有SQL注入攻擊都是有害的,但有些攻擊比其他攻擊更危險(xiǎn):訪問用戶信息是一回事,更改或刪除信息是另一回事,應(yīng)考慮特定應(yīng)用程序是否真的有必要能夠截?cái)嗷騽h除數(shù)據(jù)。

除了不允許每個(gè)應(yīng)用程序自由支配一個(gè)數(shù)據(jù)庫(kù)之外,一個(gè)應(yīng)用程序只有一個(gè)數(shù)據(jù)庫(kù)用戶也是不明智的。應(yīng)創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)用戶,并將其連接到特定的應(yīng)用程序中進(jìn)行角色分工,這可以防止攻擊者快速接管整個(gè)數(shù)據(jù)庫(kù)。

參數(shù)是最好的防御手段

提升軟件安全性的一個(gè)關(guān)鍵方法是使用預(yù)設(shè)語句和查詢參數(shù)化。預(yù)設(shè)語句能夠限制可輸入的SQL語句:開發(fā)人員創(chuàng)建一個(gè)帶有占位符的基本查詢,然后用戶給定的參數(shù)可以安全地附加到這些占位符上。在使用預(yù)設(shè)語句和參數(shù)化查詢時(shí),數(shù)據(jù)庫(kù)會(huì)首先根據(jù)帶有占位符的查詢字符串構(gòu)建查詢執(zhí)行計(jì)劃,然后將(不可信的)參數(shù)發(fā)送到數(shù)據(jù)庫(kù)。

使用存儲(chǔ)過程時(shí),參數(shù)化也很重要。就像在應(yīng)用程序中創(chuàng)建的任何SQL查詢一樣,存儲(chǔ)過程也可能被惡意注入。因此,與SQL查詢一樣,開發(fā)人員應(yīng)該在他們的存儲(chǔ)過程中參數(shù)化查詢,而不是連接參數(shù),以防止注入。

但是,在某些情況下,預(yù)設(shè)語句不可用。比如如果某種語言不支持預(yù)設(shè)語句,或者較舊的數(shù)據(jù)庫(kù)不允許開發(fā)人員將用戶輸入作為參數(shù)提供,此時(shí)輸入驗(yàn)證是一個(gè)可接受的替代方案。但團(tuán)隊(duì)?wèi)?yīng)該確保,輸入驗(yàn)證依賴的是一個(gè)使用維護(hù)良好的庫(kù)或創(chuàng)建一個(gè)規(guī)則來描述所有允許的模式,例如,使用正則表達(dá)式。當(dāng)然,即使預(yù)設(shè)語句可用,輸入驗(yàn)證也是必須的。

多層安全和嚴(yán)格檢查

除了參數(shù)化和輸入驗(yàn)證之外,開發(fā)人員還應(yīng)考慮使用對(duì)象關(guān)系映射 ( ORM ) 層來防止SQL注入。將數(shù)據(jù)從數(shù)據(jù)庫(kù)轉(zhuǎn)換為對(duì)象,反之亦然,從而減少了顯式SQL查詢和SQL注入攻擊的風(fēng)險(xiǎn)。但是需要注意的是,如果使用錯(cuò)誤、過時(shí)的Sequelize或Hibernate版本,ORM庫(kù)中仍然會(huì)產(chǎn)生漏洞,因此開發(fā)人員必須保持警惕。

最終,無論部署什么安全策略,都必須有一個(gè)嚴(yán)格的審查系統(tǒng)來審查代碼并標(biāo)記所有漏洞。代碼審查和結(jié)對(duì)編程確實(shí)允許這樣做,但手動(dòng)審查過程總是存在誤差。為了獲得最高級(jí)別的安全性,開發(fā)人員應(yīng)該尋找專門設(shè)計(jì)的掃描工具來自動(dòng)檢查SQL注入漏洞并提醒他們代碼中的所有弱點(diǎn)。

【本文是51CTO專欄作者“安全牛”的原創(chuàng)文章,轉(zhuǎn)載請(qǐng)通過安全牛(微信公眾號(hào)id:gooann-sectv)獲取授權(quán)】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2010-10-20 13:52:07

SQL Server數(shù)

2010-11-10 13:28:06

SQL Server刪

2009-07-08 12:56:32

編寫Servlet

2009-06-23 10:45:18

Hibernate支持

2011-06-10 10:43:12

Ubuntu應(yīng)用安裝

2009-12-11 18:49:39

預(yù)算編制博科資訊

2011-04-18 15:32:45

游戲測(cè)試測(cè)試方法軟件測(cè)試

2010-09-14 15:10:49

CSS注釋

2022-07-13 16:06:16

Python參數(shù)代碼

2023-08-14 17:58:13

RequestHTTP請(qǐng)求

2024-11-15 07:00:00

Python發(fā)送郵件

2010-11-09 14:35:48

SQL Server查

2010-11-12 14:00:24

Transact-SQ

2010-09-08 13:29:48

CSS

2023-02-21 14:58:12

間序列周期數(shù)據(jù)集

2020-06-17 10:52:00

DDoS攻擊網(wǎng)絡(luò)攻擊網(wǎng)絡(luò)安全

2016-10-12 13:53:38

JavaByteBufferRandomAcces

2010-11-16 16:11:28

Oracle身份驗(yàn)證

2017-04-28 15:07:10

網(wǎng)絡(luò)瓶頸問題

2016-09-09 13:07:56

CentOSJDKLinux
點(diǎn)贊
收藏

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