91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java常見的漏洞有哪些

發布時間:2021-06-18 10:21:09 來源:億速云 閱讀:168 作者:chen 欄目:編程語言

這篇文章主要講解了“Java常見的漏洞有哪些”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java常見的漏洞有哪些”吧!

人們往往默認代碼是安全的,漏洞或潛在的攻擊總是放到最后才考慮。大多數時候,我們腦子里想的都是sprint、  scrum、會議記錄,以及市場營銷獲得批準的最新進展。

在一個發展速度重于代碼安全性的世界,這是一個真實存在的問題。如果不能徹底解決入侵或黑客攻擊的問題,企業可能會損失一大筆錢。根據IBM《2020年數據泄露成本報告》,一次數據泄露的平均總成本為386萬美元。最糟糕的是,識別控制這種入侵平均需要280天。

數據是數字黃金,代碼承載著數據。雖然Java這一服務器端語言相對安全,但是黑客仍有很多方法來攻擊和訪問隱私數據。

以下是10個最常見的Java漏洞以及預防措施,可幫助大家盡快識別并抵御代碼中可能出現的漏洞。

1.代碼注入

接受輸入的應用程序都容易受到代碼注入的攻擊。當通過輸入傳遞的數據對程序運行或返回數據的方式造成意想不到的副作用時,就會發生代碼注入。

仔細想想,表單是一個雙向的過程。輸入數據后,應用程序處理數據并返回結果。如果結果不符合期望,就會讓應用程序處于易受攻擊的狀態。

代碼注入經常發生,其容易程度超出想象。2010年,一位日本開發者注意到可以將HTML作為推特發送。通過在HTML中添加一些JavaScript,他利用半夜人們熟睡的時間在Twitter上發送了一小段蠕蟲代碼。

這一小段代碼有什么用?

只要用戶將鼠標懸浮在這段代碼上面,就會立即轉發。所以關注者滾動鼠標,就是在轉發那段蠕蟲代碼。這在幾分鐘內就產生了超過3000次轉發的連鎖效應。

雖然Twitter不只在堆棧中使用了Java,但這一警示事件可以用于保護輸入表單。最簡單的方法是應用帶有輸出清理和轉義的輸入驗證。這意味著根據應用程序正在執行的任務,任何發送HTML代碼的嘗試都會被解析或拒絕。

2.命令注入

操作系統命令注入(通常稱為shell注入)是一個安全漏洞,它允許攻擊者在運行應用程序的服務器上執行shell命令。PHP通常是命令注入的目標,因為它在默認情況下調用sh/bash/cmd。然而,Java執行已給定命令的fork()來創建子進程并向其傳遞給定參數。

然而,這并不能保證代碼的安全。

應用程序可能被分割成不同級別的遺留代碼,這些代碼組合在一起形成最終的產物。這些遺留產物可以作為shell命令注入的輸入方式。

有時可能需要向服務器發出命令行,例如發送確認電子郵件。與其使用Runtime.exec()來訪問服務器,不如使用位于javax.mail中的可用Java  API。

3.連接字符串注入

連接字符串是一組用于將應用程序連接到數據源的術語。它可以連接到關系數據庫、LDAP目錄和文件。

對于數據庫連接字符串注入,惡意用戶需要四個參數:數據源、初始目錄、用戶名和密碼。當攻擊者使用分號作為分隔符將參數注入連接字符串以獲得訪問權限時,就會發生連接字符串攻擊。

這里的問題是,一些數據庫提供商沒有限定上限,而是運行“最后一個函數成功”的算法。這意味著攻擊者可以運行多個連接注入字符串,用重復參數污染它們,同時數據庫進行有效組合。因此,攻擊者最終繞過了正常的身份驗證過程,不被強制退出。

例如,注入的連接字符串可以是這樣的:

Data Source = myDataSource; Initial Catalog = db; Integrated Security = no; User ID = myUsername; Password = XXX; Intergrated Security = true; Data Source = myDataSource; Initial Catalog = db; Integrated Security = no; User ID = myUsername; Password = XXX; Intergrated Security = no;

一旦進入,惡意用戶可以劫持憑證并將其修改為他們想要的任何內容。

4.LDAP注入

LDAP注入利用輸入驗證并注入可執行查詢。LDAP是輕量級目錄訪問協議,是一種開放的、跨平臺的用于目錄服務認證的協議。LDAP是一種通信語言,應用程序可以利用它訪問目錄服務器。這些目錄服務器通常存儲用戶名、密碼、帳戶詳細信息和其他可以與網絡上的其他實體共享的信息。

當應用程序將未經處理的輸入直接插入LDAP語句時,就會發生LDAP注入。在這種情況下,攻擊者可以使用LDAP篩選器語法,這種語法可以讓服務器執行其他查詢和LDAP語句。

防止LDAP注入最簡單的方法是確保LDAP特殊字符( ) ! | & *在驗證時被轉義或拒絕。

5.基于反射的XSS攻擊

反射XSS攻擊,或反射跨域腳本攻擊,是一個添加惡意腳本的過程,這種惡意腳本是通過鏈接激活的,其之后產生的指令會將用戶傳送到其他地方。例如,一個反射XSS可以嵌入到用戶評論區,與網站的其他部分混合在一起。如果用戶點擊它就會跳轉到第三方網站,然后重新回到原來的網站。

而在第三方網站可以會出現cookie或會話竊取等惡意活動。雖然監控反射XSS很難,但垃圾郵件過濾器可以減少鏈接提交的頻率。

6.資源注入

當攻擊者成功地更改應用程序用于執行惡意任務的資源標識符時,就會發生資源注入。這可能是修改端口號、修改文件名,以及獲得執行或訪問其他資源的能力。

這是怎么發生的?通常是在應用程序通過用戶輸入定義資源的時候。

例如,假設攻擊者通過連接字符串注入獲得了對購物站點的訪問權限,或者通過XSS成功竊取了用戶的詳細信息,那他們就可以使用資源注入修改或查詢詳細信息,可以在用戶不知曉的情況下,通過在站點訂購東西、修改或竊取更多的信息來造成破壞。

7.SQL注入

SQL注入是一個在數據請求中注入SQL的過程,這會導致后端應用程序將機密數據返回或在數據庫上執行惡意腳本的內容。

這可能導致死機、數據訪問和隱私侵犯。不僅如此,SQL注入還可能導致數據丟失或損壞,并讓用戶無法進入自己的數據庫。這時,注入已經完全控制了數據。最簡單的解決方法是確保在服務器端進行驗證。前端輸入可以很容易地繞過,而后端是防止不必要的字符(如空格和引號)注入的后盾。

8.二階SQL注入


二級SQL注入分兩步。首先,攻擊者向應用程序添加了一些東西,但并不立即執行。他們可能等待著更多的數據或等待活動的觸發。這就是二階SQL注入不同于普通SQL注入的地方。

攻擊者向表行注入代碼,這一代碼將被視為可信源。然后調用該表行,導致攻擊從休眠狀態轉移到活動執行狀態。

測試二階SQL比較困難,因為它通常很隱蔽。

例如,惡意用戶以‘ or ‘hacker’=’hacker的用戶名注冊。這意味著‘ or  ‘hacker’=’hacker存儲在數據庫中。數據庫可以使用以下查詢來驗證用戶的身份:

SELECT * from creditcards WHERE username = '' or 'hacker'='hacker';

因此當用戶名是‘ or ‘hacker’=’hacker時,最終的查詢是這樣的:

SELECT * from creditcards WHERE username = '' or 'hacker'='hacker';

然后,進入登錄時,用戶名完成驗證查詢,允許訪問其他用戶及其帳戶詳細信息。

9.存儲式XSS

當攻擊者向網站或應用程序的內容注入腳本時,就會發生存儲型跨腳本攻擊或持久性跨腳本攻擊。與嵌入第三方鏈接的反射式XSS不同,存儲式XSS更危險,因為它不要求用戶交互。

由于平臺的性質,社交媒體網站特別容易受到存儲式XSS攻擊。它會鼓勵用戶發帖和互動。

XSS通常也被稱為網站蠕蟲,它最終會導致用戶得到侵犯性元素,并在瀏覽器上執行。這種攻擊可以通過假冒帳戶竊取cookies、帳戶信息或其他功能。XSS可以通過四個地址觸發,并通常利用JavaScript完成—@post.title,  post.url, @post.id and @post.footer_attr。

為了防止這種情況發生,在解析< >和@等特殊字符之前,需進行拒絕或轉義。

10.XPath注入

雖然JSON是數據結構領域的新星,但XML文檔仍然很受歡迎并被廣泛使用。XPath是用于定義XML文檔的各個部分的語法。XPath注入背后的原理與SQL注入類似。

SQL注入和XPath之間的唯一區別是后者采用XML格式。如果攻擊者找出XML結構,就可以很容易地發送畸形數據。這讓攻擊者能夠追蹤XML文檔,獲得對用戶名和密碼等詳細信息的訪問權。

通常,當查詢構建在未經驗證的輸入上時,就會發生XPath注入。防止XPath注入的技巧是使用預編譯的XPath。避免從不安全的源接收完整的表達式。如果必須對XPath進行參數化,需將其隔離為僅字符串參數,以防止查詢被劫持。

對于大多數注入,在使用用戶輸入之前進行驗證是防止潛在攻擊的最簡單方法。把任務轉移到前端是很容易的,但這只是第一道防線,并不一定能抵御住攻擊。

雖然Java可以同時作為前端和后端,但檢查用戶提供的內容是否符合期望仍然是一種很好的做法。設置驗證參數可能需要確定和指定允許的內容,而不是試圖找出并刪除其他所有內容。

感謝各位的閱讀,以上就是“Java常見的漏洞有哪些”的內容了,經過本文的學習后,相信大家對Java常見的漏洞有哪些這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐池县| 琼结县| 临朐县| 北辰区| 苏尼特右旗| 桐梓县| 南宁市| 上杭县| 无锡市| 拉萨市| 西畴县| 龙陵县| 襄樊市| 阿城市| 南溪县| 肇东市| 陆良县| 鄱阳县| 三都| 增城市| 定兴县| 石门县| 托克托县| 河池市| 兴化市| 施甸县| 宜川县| 和顺县| 佛山市| 若尔盖县| 逊克县| 江北区| 会理县| 西林县| 雷波县| 贵州省| 元朗区| 屯门区| 自治县| 纳雍县| 天门市|