首先我們來了解下什么是SQL注入,SQL注入簡單來講就是將一些非法參數(shù)插入到網(wǎng)站數(shù)據(jù)庫中去,執(zhí)行一些sql命令,比如查詢數(shù)據(jù)庫的賬號密碼,數(shù)據(jù)庫的版本,數(shù)據(jù)庫服務(wù)器的IP等等的一些操作,sql注入是目前網(wǎng)站漏洞中危害最大的一個漏洞,受攻擊的網(wǎng)站占大多數(shù)都是sql注入攻擊。
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的孟連網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
sql注入攻擊用英語來講Structured Query Language,在網(wǎng)站的編程語言當(dāng)中是一種比較另類的網(wǎng)站開發(fā)語言,我們網(wǎng)站安全行業(yè)通常來講sql是用來數(shù)據(jù)庫查詢的一種網(wǎng)站開發(fā)語言,同時也是一種腳本文件的一個文件名,通俗來講sql就是用來對網(wǎng)站的數(shù)據(jù)庫進(jìn)行查詢,以及增加,寫入,更新數(shù)據(jù)庫的一個sql數(shù)據(jù)庫操作。
關(guān)于數(shù)據(jù)庫我們分為2種數(shù)據(jù)庫,一種是關(guān)系數(shù)據(jù)庫,非關(guān)系數(shù)據(jù)庫,那么目前網(wǎng)站使用的都是關(guān)系數(shù)據(jù)庫,關(guān)系數(shù)據(jù)庫分為sql數(shù)據(jù)庫,microsoft sql server數(shù)據(jù)庫,ACC數(shù)據(jù)庫,mysql數(shù)據(jù)庫,oracle數(shù)據(jù)庫,DB2數(shù)據(jù)庫,postgresql數(shù)據(jù)庫等等的關(guān)系數(shù)據(jù)庫,非關(guān)系數(shù)據(jù)庫分為nosql數(shù)據(jù)庫,可以存儲很大數(shù)據(jù),針對于一些并發(fā)較高,存儲較多,云計算的場景,頻繁讀取寫入的數(shù)據(jù)庫,像memcachedb,redis,mongodb等等非關(guān)系數(shù)據(jù)庫。
那么什么是sql注入呢? 簡單來講就是對網(wǎng)站強(qiáng)行進(jìn)行插入數(shù)據(jù),執(zhí)行sql惡意語句對網(wǎng)站進(jìn)行攻擊,對網(wǎng)站進(jìn)行sql注入嘗試,可以獲取一些私密的信息,像數(shù)據(jù)庫的版本,管理員的賬號密碼等等。
關(guān)于如何防止sql注入攻擊,我們從以下幾點(diǎn)開始入手
首先我們可以了解到sql注入攻擊都是通過拼接的方式,把一些惡意的參數(shù)拼接到一起,然后在網(wǎng)站的前端中插入,并執(zhí)行到服務(wù)器后端到數(shù)據(jù)庫中去,通常我們在寫PHP網(wǎng)站代碼的時候會將get ID這個參數(shù)值獲取到后直接拼接到后端服務(wù)器中去,查詢數(shù)據(jù)庫,但是如果拼接了一些惡意的非法參數(shù),那么久可以當(dāng)做sql語句來執(zhí)行,如果防止sql注入呢?
為了防止網(wǎng)站被sql注入攻擊,我們應(yīng)該從一開始寫代碼的時候就應(yīng)該過濾一些sql注入的非法參數(shù),將查詢的一些sql語句,以及用戶輸入的參數(shù)值都以字符串的方式來處理,不論用戶輸入的什么東西,在sql查詢的時候只是一段字符串,這樣構(gòu)造的任何惡意參數(shù)都會以字符串的方式去查詢數(shù)據(jù)庫,一直惡意的sql注入攻擊就不會被執(zhí)行,sql注入語句也就沒有效果了,再一個就是網(wǎng)站里的任何一個可以寫入的地方盡可能的嚴(yán)格過濾與限制,漏下一個可以輸入的地方網(wǎng)站就會被攻擊,網(wǎng)站就會被黑,所有做的網(wǎng)站安全就會沒有效果,包括一些get,post,cookie方式的提交都是不可信的,像數(shù)據(jù)表里referer user-agent等字段都是可以偽造,寫入sql注入語句的,像前端時間爆發(fā)的ecshop漏洞利用的就是user.php,偽造referer參數(shù)進(jìn)行了sql注入,執(zhí)行了遠(yuǎn)程代碼。
再一個防止sql注入的方法就是開啟PHP的魔術(shù)配置,開啟安全配置模式,將safe_mode開啟on.以及關(guān)閉全局變量模式,register_globals參數(shù)設(shè)置為on,magic_quotes_gpc參數(shù)開啟,防止sql注入.如果對網(wǎng)站防止sql注入不懂的話,也可以找專業(yè)的網(wǎng)站安全公司來做安全,防止sql注入。
只要有交叉,通常而言都會有注入漏洞的。只是對于漏洞,你大可放心,應(yīng)為一般而言注入提權(quán)都是針對常用的熱門數(shù)據(jù)庫和已知漏洞進(jìn)行的,對于新興的沒有大規(guī)模使用的數(shù)據(jù)庫來說,沒有太多人花很多時間去研究,只要沒大規(guī)模傳播擴(kuò)散漏洞信息,即使是有,也比較安全的。總不可能有人就專盯你的數(shù)據(jù)庫入侵提權(quán)吧
NoSQL薄弱的安全性會給企業(yè)帶來負(fù)面影響 。Imperva公司創(chuàng)始人兼CTO Amichai Shulman如是說。在新的一年中,無疑會有更多企業(yè)開始或籌劃部署NoSQL。方案落實(shí)后就會逐漸發(fā)現(xiàn)種種安全問題,因此早做準(zhǔn)備才是正確的選擇。 作為傳統(tǒng)關(guān)系型數(shù)據(jù)庫的替代方案,NoSQL在查詢中并不使用SQL語言,而且允許用戶隨時變更數(shù)據(jù)屬性。此類數(shù)據(jù)庫以擴(kuò)展性良好著稱,并能夠在需要大量應(yīng)用程序與數(shù)據(jù)庫本身進(jìn)行實(shí)時交互的交易處理任務(wù)中發(fā)揮性能優(yōu)勢,Couchbase創(chuàng)始人兼產(chǎn)品部門高級副總裁James Phillips解釋稱:NoSQL以交易業(yè)務(wù)為核心。它更注重實(shí)時處理能力并且擅長直接對數(shù)據(jù)進(jìn)行操作,大幅度促進(jìn)了交互型軟件系統(tǒng)的發(fā)展。Phillips指出。其中最大的優(yōu)勢之一是能夠隨時改變(在屬性方面),由于結(jié)構(gòu)性的弱化,修改過程非常便捷。 NoSQL最大優(yōu)勢影響其安全性 NoSQL的關(guān)鍵性特色之一是其動態(tài)的數(shù)據(jù)模型,Shulman解釋道。我可以在其運(yùn)作過程中加入新的屬性記錄。因此與這種結(jié)構(gòu)相匹配的安全模型必須具備一定的前瞻性規(guī)劃。也就是說,它必須能夠了解數(shù)據(jù)庫引入的新屬性將引發(fā)哪些改變,以及新加入的屬性擁有哪些權(quán)限。然而這個層面上的安全概念目前尚不存在,根本沒有這樣的解決方案。 根據(jù)Phillips的說法,某些NoSQL開發(fā)商已經(jīng)開始著手研發(fā)安全機(jī)制,至少在嘗試保護(hù)數(shù)據(jù)的完整性。在關(guān)系型數(shù)據(jù)庫領(lǐng)域,如果我們的數(shù)據(jù)組成不正確,那么它將無法與結(jié)構(gòu)并行運(yùn)作,換言之?dāng)?shù)據(jù)插入操作整體將宣告失敗。目前各種驗(yàn)證規(guī)則與完整性檢查已經(jīng)比較完善,而事實(shí)證明這些驗(yàn)證機(jī)制都能在NoSQL中發(fā)揮作用。我們與其他人所推出的解決方案類似,都會在插入一條新記錄或是文檔型規(guī)則時觸發(fā),并在執(zhí)行過程中確保插入數(shù)據(jù)的正確性。 Shulman預(yù)計新用戶很快將在配置方面捅出大婁子,這并非因?yàn)镮T工作人員的玩忽職守,實(shí)際上主要原因是NoSQL作為一項(xiàng)新技術(shù)導(dǎo)致大多數(shù)人對其缺乏足夠的知識基礎(chǔ)。Application Security研發(fā)部門TeamSHATTER的經(jīng)理Alex Rothacker對上述觀點(diǎn)表示贊同。他指出,培訓(xùn)的一大問題在于,大多數(shù)NoSQL的從業(yè)者往往屬于新生代IT人士,他們對于技術(shù)了解較多,但往往缺乏足夠的安全管理經(jīng)驗(yàn)。 如果他們從傳統(tǒng)關(guān)系型數(shù)據(jù)庫入手,那么由于強(qiáng)制性安全機(jī)制的完備,他們可以在使用中學(xué)習(xí)。但NoSQL,只有行家才能通過觀察得出正確結(jié)論,并在大量研究工作后找到一套完備的安全解決方案。因此可能有90%的從業(yè)者由于知識儲備、安全經(jīng)驗(yàn)或是工作時間的局限而無法做到這一點(diǎn)。 NoSQL需在安全性方面進(jìn)行優(yōu)化 盡管Phillips認(rèn)同新技術(shù)與舊經(jīng)驗(yàn)之間存在差異,但企業(yè)在推廣NoSQL時加大對安全性的關(guān)注會起到很大程度的積極作用。他認(rèn)為此類數(shù)據(jù)存儲機(jī)制與傳統(tǒng)關(guān)系類數(shù)據(jù)庫相比,其中包含著的敏感類信息更少,而且與企業(yè)網(wǎng)絡(luò)內(nèi)部其它應(yīng)用程序的接觸機(jī)會也小得多。 他們并不把這項(xiàng)新技術(shù)完全當(dāng)成數(shù)據(jù)庫使用,正如我們在收集整理大量來自其它應(yīng)用程序的業(yè)務(wù)類數(shù)據(jù)時,往往也會考慮將其作為企業(yè)數(shù)據(jù)存儲機(jī)制一樣,他補(bǔ)充道。當(dāng)然,如果我打算研發(fā)一套具備某種特定功能的社交網(wǎng)絡(luò)、社交游戲或是某種特殊web應(yīng)用程序,也很可能會將其部署于防火墻之下。這樣一來它不僅與應(yīng)用程序緊密結(jié)合,也不會被企業(yè)中的其它部門所觸及。 但Rothacker同時表示,這種過度依賴周邊安全機(jī)制的數(shù)據(jù)庫系統(tǒng)也存在著極其危險的漏洞。一旦系統(tǒng)完全依附于周邊安全模型,那么驗(yàn)證機(jī)制就必須相對薄弱,而且缺乏多用戶管理及數(shù)據(jù)訪問方面的安全保護(hù)。只要擁有高權(quán)限賬戶,我們幾乎能訪問存儲機(jī)制中的一切數(shù)據(jù)。舉例來說,Brian Sullivan就在去年的黑帽大會上演示了如何在完全不清楚數(shù)據(jù)具體內(nèi)容的情況下,將其信息羅列出來甚至導(dǎo)出。 而根據(jù)nCircle公司CTO Tim ‘TK’ Keanini的觀點(diǎn),即使是與有限的應(yīng)用程序相關(guān)聯(lián),NoSQL也很有可能被暴露在互聯(lián)網(wǎng)上。在缺少嚴(yán)密網(wǎng)絡(luò)劃分的情況下,它可能成為攻擊者窺探存儲數(shù)據(jù)的薄弱環(huán)節(jié)。因?yàn)镹oSQL在設(shè)計上主要用于互聯(lián)網(wǎng)規(guī)模的部署,所以它很可能被直接連接到互聯(lián)網(wǎng)中,進(jìn)而面臨大量攻擊行為。 其中發(fā)生機(jī)率最高的攻擊行為就是注入式攻擊,這也是一直以來肆虐于關(guān)系類數(shù)據(jù)庫領(lǐng)域的頭號公敵。盡管NoSQL沒有將SQL作為查詢語言,也并不代表它能夠免受注入式攻擊的威脅。雖然不少人宣稱SQL注入在NoSQL這邊不起作用,但其中的原理是完全一致的。攻擊者需要做的只是改變自己注入內(nèi)容的語法形式,Rothacker解釋稱。也就是說雖然SQL注入不會出現(xiàn),但JavaScript注入或者JSON注入同樣能威脅安全。 此外,攻擊者在籌劃對這類數(shù)據(jù)庫展開侵襲時,也很可能進(jìn)一步優(yōu)化自己的工具。不成熟的安全技術(shù)往往帶來這樣的窘境:需要花費(fèi)大量時間學(xué)習(xí)如何保障其安全,但幾乎每個IT人士都能迅速掌握攻擊活動的組織方法。因此我認(rèn)為攻擊者將會始終走在安全部署的前面,Shulman說道。遺憾的是搞破壞總比防范工作更容易,而我們已經(jīng)看到不少NoSQL技術(shù)方面的公開漏洞,尤其是目前引起熱議的、以JSON注入為載體的攻擊方式。 NoSQL安全性并非其阻礙 然而,這一切都不應(yīng)該成為企業(yè)使用NoSQL的阻礙,他總結(jié)道。我認(rèn)為歸根結(jié)底,這應(yīng)該算是企業(yè)的一種商業(yè)決策。只要這種選擇能夠帶來吸引力巨大的商業(yè)機(jī)遇,就要承擔(dān)一定風(fēng)險,Shulman解釋道。但應(yīng)該采取一定措施以盡量弱化這種風(fēng)險。 舉例來說,鑒于數(shù)據(jù)庫對外部安全機(jī)制的依賴性,Rothacker建議企業(yè)積極考慮引入加密方案。他警告稱,企業(yè)必須對與NoSQL相對接的應(yīng)用程序代碼仔細(xì)檢查。換言之,企業(yè)必須嚴(yán)格挑選負(fù)責(zé)此類項(xiàng)目部署的人選,確保將最好的人才用于這方面事務(wù),Shulman表示。當(dāng)大家以NoSQL為基礎(chǔ)編寫應(yīng)用程序時,必須啟用有經(jīng)驗(yàn)的編程人員,因?yàn)榭蛻舳塑浖堑謸醢踩珕栴}的第一道屏障。切實(shí)為額外緩沖區(qū)的部署留出時間與預(yù)算,這能夠讓員工有閑暇反思自己的工作內(nèi)容并盡量多顧及安全考量多想一點(diǎn)就是進(jìn)步。綜上所述,這可能與部署傳統(tǒng)的關(guān)系類數(shù)據(jù)庫也沒什么不同。 具有諷刺意味的是,近年來數(shù)據(jù)庫應(yīng)用程序在安全性方面的提升基本都跟數(shù)據(jù)庫本身沒什么關(guān)系,nCircle公司安全研究及開發(fā)部門總監(jiān)Oliver Lavery如是說。
sql注入其實(shí)就是在這些不安全控件內(nèi)輸入sql或其他數(shù)據(jù)庫的一些語句,從而達(dá)到欺騙服務(wù)器執(zhí)行惡意到嗎影響到數(shù)據(jù)庫的數(shù)據(jù)。防止sql注入,可以在接受不安全空間的內(nèi)容時過濾掉接受字符串內(nèi)的“'”,那么他不再是一條sql語句,而是一個類似sql語句的zifuc,執(zhí)行后也不會對數(shù)據(jù)庫有破壞。 如:-----下面這一段是找的 username = request("username") //獲取用戶名 這里是通過URL傳值獲取的 password = request("password") //獲取密碼 也是通過URL傳值獲取的 sql="select * from userlist where username = '" username "' and password = '" password "'"--------如果某個人知道某個用戶名是admin,常常有人網(wǎng)站的管理員用戶名就是admin,這是密碼可以選用'or 1 or ', 那么sql="select * from userlist where username = 'admin' and password = '' or 1 or ''",顯然1是恒真的,那么驗(yàn)證密碼就通過了。補(bǔ)充: 防止的方式比較多,比如可以限制username,password中出現(xiàn)"'"這些字符,一般網(wǎng)站都是只允許數(shù)字,字符,下劃線的組合,這可以通過javascript驗(yàn)證。也可以采取用存儲過程代替sql拼接,等等。
存儲在mongodb中的時間是標(biāo)準(zhǔn)時間UTC +0:00 而咱們中國的失去是+8.00 。 不知道你用的是什么語言,就我所知道的C#的驅(qū)動支持一個特性,將實(shí)體的時間屬性上添加上這個特性并指時區(qū)就可以了。
當(dāng)前題目:nosql防止注入,為什么可以防止sql注入
本文URL:http://chinadenli.net/article2/dsicgoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、商城網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航、網(wǎng)站維護(hù)、動態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)