-----解決方案--------------------------------------------------------
過濾URL中的一些特殊字符,動態SQL語句使用PrepareStatement..
------解決方案--------------------------------------------------------
注入的方式就是在查詢條件里加入SQL字符串. 能夠檢查一下提交的查詢參數裏是否包含SQL,但一般這樣無益.jquery
最好的辦法是不要用拼接SQL字符串,能夠用prepareStatement,參數用set方法進行填裝
------解決方案--------------------------------------------------------
sql注入形式:...where name="+name+",這樣的sql語句很容易sql注入,能夠這樣:
jdbcTemplate.update("delete from userinfo where id=? and userId=?", new Object[]{userInfo.getId(),userInfo.getUserId()});
個人一些代碼,望有用!
------解決方案--------------------------------------------------------
Sql注入漏洞攻擊:如1'or'1'='1
使用參數化查詢避免
cmd.CommandText="select count(*) from 表名 where username=@a and password=@b";
cmd.parameters.Add(new SqlParameter("a",".."));
cmd.parameters.Add(new SqlParameter("b",".."));
------解決方案--------------------------------------------------------
恩,用框架,用jpa的pojo。。就沒這種事情了程序員
SSH2架構中 怎麼防止SQL注入呢?還有其餘相關安全問題怎麼設計呢?
目前的安全,只是對用戶密碼加密,前臺jquery驗證。
如何實現防止注入攻擊還有個人頁面有些隱藏域保存這當前登陸用戶的信息等信息。
用戶查看頁面源代碼就能夠查看到了。
有沒好的解決方案呢?還有其餘哪些要注意的地方呢?
Struts2 hibernate3 spring 3.0
sql server 2000 sp4web
------解決方案--------------------------------------------------------
1:向 CA 購買證書,使用 HTTPS 進行通訊,以保證在網絡傳輸過程當中是安全的
2:避免 XSS 注入(頁面回顯的 input text, input hidden 均過濾 <、>、"、' 等字符等)
3:使用隨機鍵盤或者安全控件防止鍵盤木馬記錄用戶的輸入
4:若要在 Cookie 中寫入數據,儘可能使用 Cookie 的 HttpOnly 屬性
5:響應中設置一些諸如 X-Frame-Options、X-XSS-Protection 等高版本瀏覽器支持的 HTTP 頭
6: 無論客戶端是否作過數據校驗,在服務端必需要有數據校驗(長度、格式、是否必填等等)
7: SQL 語句採用 PreparedStatement 的填充參數方式,嚴禁使用字符串拼接 SQL 或者 HQL 語句spring
六個建議防止SQL注入式攻擊
2009-04-01 14:38
SQL注入攻擊的危害性很大。在講解其防止辦法以前,數據庫管理員有必要先了解一下其攻擊的原理。這有利於管理員採起有針對性的防治措施。
1、 SQL注入攻擊的簡單示例。
statement := "SELECT * FROM Users WHERE Value= " + a_variable + "
上面這條語句是很普通的一條SQL語句,他主要實現的功能就是讓用戶輸入一個員工編號而後查詢處這個員工的信息。可是若這條語句被不法攻擊者改裝事後,就可能成爲破壞數據的黑手。如攻擊者在輸入變量的時候,輸入如下內容SA001’;drop table c_order--。那麼以上這條SQL語句在執行的時候就變爲了SELECT * FROM Users WHERE Value= ‘SA001’;drop table c_order--。
這條語句是什麼意思呢?‘SA001’後面的分號表示一個查詢的結束和另外一條語句的開始。c_order後面的雙連字符 指示當前行餘下的部分只是一個註釋,應該忽略。若是修改後的代碼語法正確,則服務器將執行該代碼。系統在處理這條語句時,將首先執行查詢語句,查到用戶編號爲SA001 的用戶信息。而後,數據將刪除表C_ORDER(若是沒有其餘主鍵等相關約束,則刪除操做就會成功)。只要注入的SQL代碼語法正確,便沒法採用編程方式來檢測篡改。所以,必須驗證全部用戶輸入,並仔細檢查在您所用的服務器中執行構造 SQL命令的代碼。
2、 SQL注入攻擊原理。
可見SQL注入攻擊的危害性很大。在講解其防止辦法以前,數據庫管理員有必要先了解一下其攻擊的原理。這有利於管理員採起有針對性的防治措施。
SQL注入是目前比較常見的針對數據庫的一種攻擊方式。在這種攻擊方式中,攻擊者會將一些惡意代碼插入到字符串中。而後會經過各類手段將該字符串傳遞到SQLServer數據庫的實例中進行分析和執行。只要這個惡意代碼符合SQL語句的規則,則在代碼編譯與執行的時候,就不會被系統所發現。
SQL注入式攻擊的主要形式有兩種。一是直接將代碼插入到與SQL命令串聯在一塊兒並使得其以執行的用戶輸入變量。上面筆者舉的例子就是採用了這種方法。因爲其直接與SQL語句捆綁,故也被稱爲直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者做爲原書據存儲的字符串。在存儲的字符串中會鏈接到一個動態的SQL命令中,以執行一些惡意的SQL代碼。
注入過程的工做方式是提早終止文本字符串,而後追加一個新的命令。如以直接注入式攻擊爲例。就是在用戶輸入變量的時候,先用一個分號結束當前的語句。而後再插入一個惡意SQL語句便可。因爲插入的命令可能在執行前追加其餘字符串,所以攻擊者經常用註釋標記「—」來終止注入的字符串。執行時,系統會認爲此後語句位註釋,故後續的文本將被忽略,不背編譯與執行。
3、 SQL注入式攻擊的防治。
既然SQL注入式攻擊的危害這麼大,那麼該如何來防治呢?下面這些建議或許對數據庫管理員防治SQL注入式攻擊有必定的幫助。
1、 普通用戶與系統管理員用戶的權限要有嚴格的區分。
若是一個普通用戶在使用查詢語句中嵌入另外一個Drop Table語句,那麼是否容許執行呢?因爲Drop語句關係到數據庫的基本對象,故要操做這個語句用戶必須有相關的權限。在權限設計中,對於終端用戶,即應用軟件的使用者,沒有必要給他們數據庫對象的創建、刪除等權限。那麼即便在他們使用SQL語句中帶有嵌入式的惡意代碼,因爲其用戶權限的限制,這些代碼也將沒法被執行。故應用程序在設計的時候,最好把系統管理員的用戶與普通用戶區分開來。如此能夠最大限度的減小注入式攻擊對數據庫帶來的危害。
2、 強迫使用參數化語句。
若是在編寫SQL語句的時候,用戶輸入的變量不是直接嵌入到SQL語句。而是經過參數來傳遞這個變量的話,那麼就能夠有效的防治SQL注入式攻擊。也就是說,用戶的輸入絕對不可以直接被嵌入到SQL語句中。與此相反,用戶的輸入的內容必須進行過濾,或者使用參數化的語句來傳遞用戶輸入的變量。參數化的語句使用參數而不是將用戶輸入變量嵌入到SQL語句中。採用這種措施,能夠杜絕大部分的SQL注入式攻擊。不過惋惜的是,如今支持參數化語句的數據庫引擎並很少。不過數據庫工程師在開發產品的時候要儘可能採用參數化語句。
3、 增強對用戶輸入的驗證。
整體來講,防治SQL注入式攻擊能夠採用兩種方法,一是增強對用戶輸入內容的檢查與驗證;二是強迫使用參數化語句來傳遞用戶輸入的內容。在SQLServer數據庫中,有比較多的用戶輸入內容驗證工具,能夠幫助管理員來對付SQL注入式攻擊。測試字符串變量的內容,只接受所需的值。拒絕包含二進制數據、轉義序列和註釋字符的輸入內容。這有助於防止腳本注入,防止某些緩衝區溢出攻擊。測試用戶輸入內容的大小和數據類型,強制執行適當的限制與轉換。這即有助於防止有意形成的緩衝區溢出,對於防治注入式攻擊有比較明顯的效果。
如可使用存儲過程來驗證用戶的輸入。利用存儲過程能夠實現對用戶輸入變量的過濾,如拒絕一些特殊的符號。如以上那個惡意代碼中,只要存儲過程把那個分號過濾掉,那麼這個惡意代碼也就沒有用武之地了。在執行SQL語句以前,能夠經過數據庫的存儲過程,來拒絕接納一些特殊的符號。在不影響數據庫應用的前提下,應該讓數據庫拒絕包含如下字符的輸入。如分號分隔符,它是SQL注入式攻擊的主要幫兇。如註釋分隔符。註釋只有在數據設計的時候用的到。通常用戶的查詢語句中沒有必要註釋的內容,故能夠直接把他拒絕掉,一般狀況下這麼作不會發生意外損失。把以上這些特殊符號拒絕掉,那麼即便在SQL語句中嵌入了惡意代碼,他們也將毫無做爲。
故始終經過測試類型、長度、格式和範圍來驗證用戶輸入,過濾用戶輸入的內容。這是防止SQL注入式攻擊的常見而且行之有效的措施。
4、 多多使用SQL Server數據庫自帶的安全參數。
爲了減小注入式攻擊對於SQL Server數據庫的不良影響,在SQLServer數據庫專門設計了相對安全的SQL參數。在數據庫設計過程當中,工程師要儘可能採用這些參數來杜絕惡意的SQL注入式攻擊。
如在SQL Server數據庫中提供了Parameters集合。這個集合提供了類型檢查和長度驗證的功能。若是管理員採用了Parameters這個集合的話,則用戶輸入的內容將被視爲字符值而不是可執行代碼。即便用戶輸入的內容中含有可執行代碼,則數據庫也會過濾掉。由於此時數據庫只把它看成普通的字符來處理。使用Parameters集合的另一個優勢是能夠強制執行類型和長度檢查,範圍之外的值將觸發異常。若是用戶輸入的值不符合指定的類型與長度約束,就會發生異常,並報告給管理員。如上面這個案例中,若是員工編號定義的數據類型爲字符串型,長度爲10個字符。而用戶輸入的內容雖然也是字符類型的數據,可是其長度達到了20個字符。則此時就會引起異常,由於用戶輸入的內容長度超過了數據庫字段長度的限制。
5、 多層環境如何防治SQL注入式攻擊?
在多層應用環境中,用戶輸入的全部數據都應該在驗證以後才能被容許進入到可信區域。未經過驗證過程的數據應被數據庫拒絕,並向上一層返回一個錯誤信息。實現多層驗證。對無目的的惡意用戶採起的預防措施,對堅決的攻擊者可能無效。更好的作法是在用戶界面和全部跨信任邊界的後續點上驗證輸入。如在客戶端應用程序中驗證數據能夠防止簡單的腳本注入。可是,若是下一層認爲其輸入已經過驗證,則任何能夠繞過客戶端的惡意用戶就能夠不受限制地訪問系統。故對於多層應用環境,在防止注入式攻擊的時候,須要各層一塊兒努力,在客戶端與數據庫端都要採用相應的措施來防治SQL語句的注入式攻擊。
6、 必要的狀況下使用專業的漏洞掃描工具來尋找可能被攻擊的點。
使用專業的漏洞掃描工具,能夠幫助管理員來尋找可能被SQL注入式攻擊的點。不過漏洞掃描工具只能發現攻擊點,而不可以主動起到防護SQL注入攻擊的做用。固然這個工具也常常被攻擊者拿來使用。如攻擊者能夠利用這個工具自動搜索攻擊目標並實施攻擊。爲此在必要的狀況下,企業應當投資於一些專業的漏洞掃描工具。一個完善的漏洞掃描程序不一樣於網絡掃描程序,它專門查找數據庫中的SQL注入式漏洞。最新的漏洞掃描程序能夠查找最新發現的漏洞。因此憑藉專業的工具,能夠幫助管理員發現SQL注入式漏洞,並提醒管理員採起積極的措施來預防SQL注入式攻擊。若是攻擊者可以發現的SQL注入式漏洞數據庫管理員都發現了並採起了積極的措施堵住漏洞,那麼攻擊者也就無從下手了。sql
如何防範黑客入侵網站的幾種常見安全方法
• 本文的目的是告訴企業在建網站時如何打造一個防範黑客攻擊的安全網站
• 互聯網隨着時間的發展,它的優點愈來愈來明顯,世界愈來愈多的企業經過這二十四小時不間斷的傳波平臺,打造本身公司的網站,開展電子商務活動;因爲互聯網的特殊性和複雜性,一旦你企業的網站接入互聯網後,你的企業網站便爲一個公衆場所,任何人均可以上你的企業網站瀏覽信息,任何人(好比:黑客)都有可能對你的企業網站進行技術上測試,查找你的企業網站在程序設計上的漏洞,不論他目的是惡意還其它緣由,你都沒法制止他的行爲,由於黑客在遠程電腦上實施操做。
• 建設一個有安全係數保證的網站,關係着一個企業的商業信譽問題,面臨日夜猖狂、日益肆虐的網絡攻擊事件不斷髮生,給本身的網站作一些最基本的安全防範措施是很是必要的。
• 非法字符過濾和轉換
• 黑客攻擊網站以前,先採用探路方式,經過網站的留言、論壇、搜索等系統,注入可執行的web腳本代碼和SQL語法,來達到入侵網站的目的;對網站全部交互式接口的文本輸入框(如:網站留言系統、BBS系統、blog系統、搜索系統、登錄系統等)的地方採起在客戶端非法字符過濾和轉換技術,經過非法字符過濾和轉換將可執行的惡意代碼變爲可讀HTML代碼,使它基本失去了暴破網站的威力,又起到了保護網站程序源代碼不受破壞的做用。
• 建一個指定自定義出錯(Error)的信息頁面
• 好處在於防止網站設計源代碼的溢出,黑客在入侵網站的後臺管理系統,每每在網頁地址欄輸入可執行的SQL語法和根據程序員爲網頁命名的習慣輸入網址的文件名,一旦黑客採用這種方式,就會將黑客帶向指定自定義出錯(Error)的信息頁面。shell
• 拒絕Cookie驗證方式
• Cookie的好處在於管理員和註冊用戶登錄網站時Cookie會保存登錄信息,下次再登錄時Cookie會自動將這些信息保留在登錄的頁面輸入文本框中,其做用是爲了方便登錄者,但也給黑客採集Cookie的信息提供了良機,因此應該拒絕採用客戶端Cookie驗證登錄方式,而改用經過服務器驗證方式登錄並對帳號和密碼採用單向加密方式保存。
• 不要用自助建網站系統建你的企業網站
• 一些網站設計公司爲了增長銷量下降成本(其實大部分客戶喜歡購買廉價的自助建網站系統),開發不一樣用途的自助建網站系統(如:網站內容管理、BBS、新聞發佈、留言、博客等),同時爲了爭奪市場、擴大產品知名度,每每兩種方式銷售產品:我的版能夠免費下載;商業版則須要購買;其實兩個版本的網站在是同一種程序技術基礎開發出來的,商業版是受權驗證後可做商業用途,有技術支持和維護保證;黑客經過下載我的版,來潛心深研這些自助建網站系統的開放源代碼,從中找出程序漏洞,一旦發現了可攻擊的程序漏洞,經過搜索引擎平臺檢索出同一型號版本自建網站系統,而後就發起攻擊;解決方式找有自主能力開發網站公司設計你的企業網站,經過將網站的設計源代碼封裝成「.dll」組件,這樣即保證網站設計上的安全性又保護了源代碼,又提升了網站的安全係數同時也下降了網站被入侵的危害程度,由於黑客攻陷網站每每是從研究網站源代碼開始並中找出程序漏洞。
• 解決Googel「暴庫」問題
• 一些程序員在開發網站喜歡用虛擬路徑方法調用數據庫,這就必須將數據庫保存在開通WWW服務的文件夾下,天然逃不過狡猾黑客的眼睛,一旦黑客破解了數據庫的真實保存位置,即可以從瀏覽器的地址欄打開和下載該數據庫,對網站的後果是很是危險的;要想確保你網站的數據庫不被黑客下載,只要採起將數據庫保存在非WWW服務的文件夾下,經過物理(真實)路徑方法調用數據庫,就可徹底防止黑客下載你企業網站的數據庫。數據庫
• 創建robots文件
• 爲了防止網站的重要文件夾(如:後臺管理)和文件(如:純程序文件)不被搜索引擎所收錄,首先在網站根目錄下建一個「robots.txt」純文本文件,來防止網站的重要文件或其它敏感信息被搜索引擎所收錄;最大多搜索引擎平臺都遵照robots協議;搜索引擎機器人訪問網站時,首先找到網站根目錄下robots文件,而後會讀取robots文件的內容,來肯定它對網站收錄的範圍;robots文件能夠說是對搜索引擎機器人收錄權限的限制管理,從而避免將網站的重要文件或其它敏感信息暴露在網絡上,在網站安全上起一個防護鎖做用,robots文件可由網站設計者在遵照robots協議下,根據網站的實際狀況自由編寫。
• 徹底將杜絕黑客的攻擊和入侵是不可能的,徹底在網站的每一個接口過濾和轉換非法字符串是辦不到,好比,在文件上傳時,狡猾黑客會採起躲過過濾和轉換非法字符串的辦法,將可執行惡意腳本代碼保存「.gif」格式或「.jpg」格式來實施文件上傳漏洞攻擊,解決的方法是對全部上傳的文件先導入到「.txt」純文本文件讀一遍,判斷是不是可執行惡意腳本代碼,若是是就刪除,可是網站管理員要有web程序基礎;黑客入侵網站的方式變化無窮,幾千種免費暴破網站的軟件,使你企業網站防不勝防,可是以上介紹幾種防護措施對菜鳥黑客是可行的,對於一些資深黑客,他也要費一些精力和時間來暴破你企業網站,他會考慮值不值得?畢竟你的網站只是一個企業網站,不是銀行和證券交涉現金交易的網站(它們的程序設計安全係數更高),在大多數下狀況,「大俠」黑客不會光顧你企業網站。編程
1、SQL注入漏洞的入侵
這種是ASP+ACCESS的網站入侵方式,經過注入點列出數據庫裏面管理員的賬號和密碼信息,而後猜解出網站的後臺地址,而後用賬號和密碼登陸進去找到文件上傳的地方,把ASP木立刻傳上去,得到一個網站的WEBSHELL。這個是黑鏈使用的前一部分,應該比較經常使用吧。如今網上賣webshell的太多了。
2、ASP上傳漏洞的利用
這種技術方式是利用一些網站的ASP上傳功能來上傳ASP木馬的一種入侵方式,很多網站都限制了上傳文件的類型,通常來講ASP爲後綴的文件都不容許上傳,可是這種限制是能夠被黑客突破的,黑客能夠採起COOKIE欺騙的方式來上傳ASP木馬,得到網站的WEBSHELL權限。
3、後臺數據庫備份方式得到WEBSHELL
這個主要是利用網站後臺對ACCESS數據庫進行數據庫備份和恢復的功能,備份數據庫路徑等變量沒有過濾致使能夠把任何文件的後綴改爲ASP,那麼利用網站上傳的功能上傳一個文件名改爲JPG或者GIF後綴的ASP木馬,而後用這個恢復庫備份和恢復的功能把這個木馬恢復成ASP文件,從而達到可以獲取網站WEBSHELL控制權限的目的。
4、網站旁註入侵
這種技術是經過IP綁定域名查詢的功能查出服務器上有多少網站,而後經過一些薄弱的網站實施入侵,拿到權限以後轉而控制服務器的其它網站。
下面這幾種我就聽不懂了,不過有點高技術的站長會看懂的。
5、sa注入點利用的入侵技術
這種是ASP+MSSQL網站的入侵方式,找到有SA權限的SQL注入點,而後用SQL數據庫的XP_CMDSHELL的存儲擴展來運行系統命令創建系統級別的賬號,而後經過3389登陸進去,或者在一臺肉雞上用NC開設一個監聽端口,而後用VBS一句話木馬下載一個NC到服務器裏面,接着運行NC的反向鏈接命令,讓服務器反向鏈接到遠程肉雞上,這樣遠程肉雞就有了一個遠程的系統管理員級別的控制權限。
6、sa弱密碼的入侵技術
這種方式是用掃描器探測SQL的賬號和密碼信息的方式拿到SA的密碼,而後用SQLEXEC之類的工具經過1433端口鏈接到遠程服務器上,而後開設系統賬號,經過3389登陸。而後這種入侵方式還能夠配合WEBSHELL來使用,通常的ASP+MSSQL 網站一般會把MSSQL的鏈接密碼寫到一個配置文件當中,這個能夠用WEBSHELL來讀取配置文件裏面的SA密碼,而後能夠上傳一個SQL木馬的方式來獲取系統的控制權限。
7、提交一句話木馬的入侵方式
這種技術方式是對一些數據庫地址被改爲asp文件的網站來實施入侵的。黑客經過網站的留言版,論壇系統等功能提交一句話木馬到數據庫裏面,而後在木馬客戶端裏面輸入這個網站的數據庫地址並提交,就能夠把一個ASP木馬寫入到網站裏面,獲取網站的WEBSHELL權限。
8、論壇漏洞利用入侵方式
這種技術是利用一些論壇存在的安全漏洞來上傳ASP木馬得到WEBSHELL權限,最典型的就是,動網6.0版本,7.0版本都存在安全漏洞,拿7.0版原本說,註冊一個正常的用戶,而後用抓包工具抓取用戶提交一個ASP文件的COOKIE,而後用明小子之類的軟件採起COOKIE欺騙的上傳方式就能夠上傳一個ASP木馬,得到網站的WEBSHELL。瀏覽器