封神演义预告片
您的位置: 站云中國 ? 云主機 ? 使用云主機如何防止SQL注入
使用云主機如何防止SQL注入
2014-10-06 20:02 站云中國


-----解決方案--------------------------------------------------------
過濾URL中的一些特殊字符,動態SQL語句使用PrepareStatement.. 
------解決方案--------------------------------------------------------
注入的方式就是在查詢條件里加入SQL字符串. 可以檢查一下提交的查詢參數里是否包含SQL,但通常這樣無益.


最好的辦法是不要用拼接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 [email protected] and [email protected]";
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 sp4




------解決方案--------------------------------------------------------
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 語句


六個建議防止SQL注入式攻擊
2009-04-01 14:38
SQL注入攻擊的危害性很大。在講解其防止辦法之前,數據庫管理員有必要先了解一下其攻擊的原理。這有利于管理員采取有針對性的防治措施。
  一、 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命令的代碼。
  二、 SQL注入攻擊原理。
  可見SQL注入攻擊的危害性很大。在講解其防止辦法之前,數據庫管理員有必要先了解一下其攻擊的原理。這有利于管理員采取有針對性的防治措施。
  SQL注入是目前比較常見的針對數據庫的一種攻擊方式。在這種攻擊方式中,攻擊者會將一些惡意代碼插入到字符串中。然后會通過各種手段將該字符串傳遞到SQLServer數據庫的實例中進行分析和執行。只要這個惡意代碼符合SQL語句的規則,則在代碼編譯與執行的時候,就不會被系統所發現。
  SQL注入式攻擊的主要形式有兩種。一是直接將代碼插入到與SQL命令串聯在一起并使得其以執行的用戶輸入變量。上面筆者舉的例子就是采用了這種方法。由于其直接與SQL語句捆綁,故也被稱為直接注入式攻擊法。二是一種間接的攻擊方法,它將惡意代碼注入要在表中存儲或者作為原書據存儲的字符串。在存儲的字符串中會連接到一個動態的SQL命令中,以執行一些惡意的SQL代碼。
  注入過程的工作方式是提前終止文本字符串,然后追加一個新的命令。如以直接注入式攻擊為例。就是在用戶輸入變量的時候,先用一個分號結束當前的語句。然后再插入一個惡意SQL語句即可。由于插入的命令可能在執行前追加其他字符串,因此攻擊者常常用注釋標記“—”來終止注入的字符串。執行時,系統會認為此后語句位注釋,故后續的文本將被忽略,不背編譯與執行。
  三、 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注入式漏洞數據庫管理員都發現了并采取了積極的措施堵住漏洞,那么攻擊者也就無從下手了。




如何防范黑客入侵網站的幾種常見安全方法
? 本文的目的是告訴企業在建網站時如何打造一個防范黑客攻擊的安全網站
? 互聯網隨著時間的發展,它的優勢越來越來明顯,世界越來越多的企業通過這二十四小時不間斷的傳波平臺,打造自己公司的網站,開展電子商務活動;由于互聯網的特殊性和復雜性,一旦你企業的網站接入互聯網后,你的企業網站便為一個公眾場所,任何人都可以上你的企業網站瀏覽信息,任何人(比如:黑客)都有可能對你的企業網站進行技術上測試,查找你的企業網站在程序設計上的漏洞,不論他目的是惡意還其它原因,你都無法制止他的行為,因為黑客在遠程電腦上實施操作。
? 建設一個有安全系數保證的網站,關系著一個企業的商業信譽問題,面臨日夜猖狂、日益肆虐的網絡攻擊事件不斷發生,給自己的網站做一些最基本的安全防范措施是非常必要的。
? 非法字符過濾和轉換
? 黑客攻擊網站之前,先采用探路方式,通過網站的留言、論壇、搜索等系統,注入可執行的web腳本代碼和SQL語法,來達到入侵網站的目的;對網站所有交互式接口的文本輸入框(如:網站留言系統、BBS系統、blog系統、搜索系統、登陸系統等)的地方采取在客戶端非法字符過濾和轉換技術,通過非法字符過濾和轉換將可執行的惡意代碼變為可讀HTML代碼,使它基本失去了暴破網站的威力,又起到了保護網站程序源代碼不受破壞的作用。
? 建一個指定自定義出錯(Error)的信息頁面
? 好處在于防止網站設計源代碼的溢出,黑客在入侵網站的后臺管理系統,往往在網頁地址欄輸入可執行的SQL語法和根據程序員為網頁命名的習慣輸入網址的文件名,一旦黑客采用這種方式,就會將黑客帶向指定自定義出錯(Error)的信息頁面。


? 拒絕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。

封神演义预告片