典型的sql注入攻擊
Select * from use_info where username = “input_usr_name” and password = “input_pwd”
密碼輸入 “ or “”=” 就變成了:
Select * from use_info where username = “input_usr_name” and password = “” or “” = “”
就可隨意登錄了. PreparedStatement可破, 盡量不用用字符串拼接生成運(yùn)行邏輯
操作系統(tǒng)命令注入。Java 語言提供了類似 Runtime.exec(…) 的 API,可以用來執(zhí)行特定命令,假設(shè)我們構(gòu)建了一個(gè)應(yīng)用,以輸入文本作為參數(shù),執(zhí)行下面的命令:
ls –la input_file_name
但是如果用戶輸入是 “input_file_name;rm –rf /*”,這就有可能出現(xiàn)問題了
利用哈希碰撞發(fā)起拒絕服務(wù)攻擊(DOS,Denial-Of-Service attack),常見的場(chǎng)景是,攻擊者可以事先構(gòu)造大量相同哈希值的數(shù)據(jù),然后以 JSON 數(shù)據(jù)的形式發(fā)送給服務(wù)器端,服務(wù)器端在將其構(gòu)建成為 Java 對(duì)象過程中,通常以 Hastable 或 HashMap 等形式存儲(chǔ),哈希碰撞將導(dǎo)致哈希表發(fā)生嚴(yán)重退化,算法復(fù)雜度可能上升一個(gè)數(shù)量級(jí)(HashMap 后續(xù)進(jìn)行了改進(jìn),我在[第 9 講]介紹了樹化機(jī)制),進(jìn)而耗費(fèi)大量 CPU 資源。