女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是SQL注入?Java項目防止SQL注入方式總結

馬哥Linux運維 ? 來源:CSDN-肥肥技術宅 ? 2023-09-25 10:43 ? 次閱讀

一、什么是SQL注入?

SQL注入即是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙數據庫服務器執行非授權的任意查詢,從而進一步得到相應的數據信息。

478dbd2a-5a12-11ee-939d-92fbcf53809c.jpg

SQL案列

Stringsql="deletefromtable1whereid="+"id";

這個id從請求參數中獲取,若參數被拼接為:

1001 or 1 = 1

最執行語句變為:

Stringsql="deletefromtable1whereid=1001or1=1";

此時,數據庫的數據都會被清空掉,后果非常嚴重

二、Java項目防止SQL注入方式

這里總結4種:

PreparedStatement防止SQL注入

mybatis中#{}防止SQL注入

對請求參數的敏感詞匯進行過濾

nginx反向代理防止SQL注入

1、PreparedStatement防止SQL注入

PreparedStatement具有預編譯功能,以上述SQL為例

使用PreparedStatement預編譯后的SQL為:

deletefromtable1whereid=?

此時SQL語句結構已固定,無論"?"被替換為任何參數,SQL語句只認為where后面只有一個條件,當再傳入 1001 or 1 = 1時,語句會報錯,從而達到防止SQL注入效果

2、mybatis中#{}防止SQL注入

mybatis中#{}表達式防止SQL注入與PreparedStatement類似,都是對SQL語句進行預編譯處理

注意:

#{} :參數占位符

${} :拼接替換符,不能防止SQL注入,一般用于

傳入數據庫對象(如:數據庫名稱、表名)

order by 后的條件

3、對請求參數的敏感詞匯進行過濾

這里是springboot的寫法,如下:

importorg.springframework.context.annotation.Configuration;
importjavax.servlet.*;
importjavax.servlet.annotation.WebFilter;
importjava.io.IOException;
importjava.util.Enumeration;

/**
*@Auther:睡竹
*@Date:2023/03/07
*@Description:sql防注入過濾器
*/
@WebFilter(urlPatterns="/*",filterName="sqlFilter")
@Configuration
publicclassSqlFilterimplementsFilter{

@Override
publicvoidinit(FilterConfigfilterConfig)throwsServletException{}

/**
*@descriptionsql注入過濾
*/
@Override
publicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{
ServletRequestrequest=servletRequest;
ServletResponseresponse=servletResponse;
//獲得所有請求參數名
Enumerationnames=request.getParameterNames();
Stringsql="";
while(names.hasMoreElements()){
//得到參數名
Stringname=names.nextElement().toString();
//得到參數對應值
String[]values=request.getParameterValues(name);
for(inti=0;i

4、nginx反向代理防止SQL注入

越來越多網站使用nginx進行反向代理,該層我們也可以進行防止SQL注入配置。

將下面的Nginx配置文件代碼放入到server塊中,然后重啟Nginx即可

if($request_method!~*GET|POST){return444;}
#使用444錯誤代碼可以更加減輕服務器負載壓力。
#防止SQL注入
if($query_string~*($|'|--|[+|(%20)]union[+|(%20)]|[+|(%20)]insert[+|(%20)]|[+|(%20)]drop[+|(%20)]|[+|(%20)]truncate[+|(%20)]|[+|(%20)]update[+|(%20)]|[+|(%20)]from[+|(%20)]|[+|(%20)]grant[+|(%20)]|[+|(%20)]exec[+|(%20)]|[+|(%20)]where[+|(%20)]|[+|(%20)]select[+|(%20)]|[+|(%20)]and[+|(%20)]|[+|(%20)]or[+|(%20)]|[+|(%20)]count[+|(%20)]|[+|(%20)]exec[+|(%20)]|[+|(%20)]chr[+|(%20)]|[+|(%20)]mid[+|(%20)]|[+|(%20)]like[+|(%20)]|[+|(%20)]iframe[+|(%20)]|[<|%3c]script[>|%3e]|javascript|alert|webscan|dbappsecurity|style|confirm(|innerhtml|innertext)(.*)$){return555;}
if($uri~*(/~).*){return501;}
if($uri~*(\x.)){return501;}
#防止SQL注入
if($query_string~*"[;'<>].*"){return509;}
if($request_uri~""){return509;}
if($request_uri~(/.+)){return509;}
if($request_uri~(.+/)){return509;}
#if($uri~*(insert|select|delete|update|count|master|truncate|declare|exec|*|')(.*)$){return503;}
#防止SQL注入
if($request_uri~*"(cost()|(concat()"){return504;}
if($request_uri~*"[+|(%20)]union[+|(%20)]"){return504;}
if($request_uri~*"[+|(%20)]and[+|(%20)]"){return504;}
if($request_uri~*"[+|(%20)]select[+|(%20)]"){return504;}
if($request_uri~*"[+|(%20)]or[+|(%20)]"){return504;}
if($request_uri~*"[+|(%20)]delete[+|(%20)]"){return504;}
if($request_uri~*"[+|(%20)]update[+|(%20)]"){return504;}
if($request_uri~*"[+|(%20)]insert[+|(%20)]"){return504;}
if($query_string~"(<|%3C).*script.*(>|%3E)"){return505;}
if($query_string~"GLOBALS(=|[|\%[0-9A-Z]{0,2})"){return505;}
if($query_string~"_REQUEST(=|[|\%[0-9A-Z]{0,2})"){return505;}
if($query_string~"proc/self/environ"){return505;}
if($query_string~"mosConfig_[a-zA-Z_]{1,21}(=|\%3D)"){return505;}
if($query_string~"base64_(en|de)code(.*)"){return505;}
if($query_string~"[a-zA-Z0-9_]=http://"){return506;}
if($query_string~"[a-zA-Z0-9_]=(..//?)+"){return506;}
if($query_string~"[a-zA-Z0-9_]=/([a-z0-9_.]//?)+"){return506;}
if($query_string~"b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)b"){return507;}
if($query_string~"b(erections|hoodia|huronriveracres|impotence|levitra|libido)b"){return507;}
if($query_string~"b(ambien|bluespill|cialis|cocaine|ejaculation|erectile)b"){return507;}
if($query_string~"b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)b"){return507;}
#這里大家根據自己情況添加刪減上述判斷參數,cURL、wget這類的屏蔽有點兒極端了,但要“寧可錯殺一千,不可放過一個”。
if($http_user_agent~*YisouSpider|ApacheBench|WebBench|Jmeter|JoeDog|Havij|GetRight|TurnitinBot|GrabNet|masscan|mail2000|github|wget|curl|Java|python){return508;}
#同上,大家根據自己站點實際情況來添加刪減下面的屏蔽攔截參數。
if($http_user_agent~*"Go-Ahead-Got-It"){return508;}
if($http_user_agent~*"GetWeb!"){return508;}
if($http_user_agent~*"Go!Zilla"){return508;}
if($http_user_agent~*"DownloadDemon"){return508;}
if($http_user_agent~*"IndyLibrary"){return508;}
if($http_user_agent~*"libwww-perl"){return508;}
if($http_user_agent~*"NmapScriptingEngine"){return508;}
if($http_user_agent~*"~17ce.com"){return508;}
if($http_user_agent~*"WebBench*"){return508;}
if($http_user_agent~*"spider"){ return 508;}#這個會影響國內某些搜索引擎爬蟲,比如:搜狗
#攔截各惡意請求的UA,可以通過分析站點日志文件或者waf日志作為參考配置。
if($http_referer~*17ce.com){return509;}
#攔截17ce.com站點測速節點的請求,所以明月一直都說這些測速網站的數據僅供參考不能當真的。
if($http_referer~*WebBench*"){return509;}
#攔截WebBench或者類似壓力測試工具,其他工具只需要更換名稱即可。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1281

    瀏覽量

    70789
  • JAVA
    +關注

    關注

    20

    文章

    2984

    瀏覽量

    106831
  • SQL
    SQL
    +關注

    關注

    1

    文章

    780

    瀏覽量

    44800
  • 應用程序
    +關注

    關注

    38

    文章

    3322

    瀏覽量

    58704

原文標題:值得推薦,JAVA中防止SQL注入的四種方案

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    sql注入原理及預防措施

    可能發生SQL注入安全問題,那么,如何防止SQL注入呢?針對SQL
    發表于 03-21 14:47

    SQL注入擴展移位溢注

    SQL注入擴展移位溢注
    發表于 09-07 15:06 ?11次下載
    <b class='flag-5'>SQL</b><b class='flag-5'>注入</b>擴展移位溢注

    基于SQL注入攻擊檢測與防御的方法

    顯露出來,這些給人們的生活、工作、學習都帶來了巨大的損失。面對Web 網站存在的種種安全漏洞問題,文章通過對大量SQL注入攻擊報文的攻擊特征進行總結分析,結合SQL
    發表于 10-31 10:57 ?18次下載
    基于<b class='flag-5'>SQL</b><b class='flag-5'>注入</b>攻擊檢測與防御的方法

    sql注入攻擊實例講解

     “SQL注入”是一種利用未過濾/未審核用戶輸入的攻擊方法(“緩存溢出”和這個不同),意思就是讓應用運行本不應該運行的SQL代碼。如果應用毫無防備地創建了SQL字符串并且運行了它們,就
    發表于 11-17 14:07 ?1.9w次閱讀
    <b class='flag-5'>sql</b><b class='flag-5'>注入</b>攻擊實例講解

    網絡環境的SQL注入行為檢測

    SQL注入攻擊是Web應用面臨的主要威脅之一,傳統的檢測方法針對客戶端或服務器端進行。通過對SQL注入的一般過程及其流量特征分析,發現其在請求長度、連接數以及特征串等方面,與正常流量相
    發表于 02-23 09:58 ?1次下載

    如何使用Java Web防范SQL 注入攻擊的資料說明

    網絡的廣泛應用給社會帶來極大便捷,網絡安全特別是SQL 注入也成為了一個倍受關注的問題。與此同時,Java Web 由于其平臺無關性、“一次編寫、隨處運行”,使得越來越多的程序員加入到Java
    發表于 02-26 15:59 ?12次下載
    如何使用<b class='flag-5'>Java</b> Web防范<b class='flag-5'>SQL</b> <b class='flag-5'>注入</b>攻擊的資料說明

    一文帶你了解安全測試基礎之SQL注入

    傳說,SQL注入是黑客對數據庫進行攻擊的常用手段,今天就來介紹一下SQL注入
    的頭像 發表于 06-28 11:15 ?2428次閱讀

    訓練SQL注入的sqil-labs-master闖關游戲

    訓練SQL注入的sqil-labs-master闖關游戲
    發表于 05-14 09:31 ?0次下載

    SQL注入攻擊是什么 SQL注入會帶來哪些威脅

    AQL的定義 SQL是操作數據庫數據的結構化查詢語言,網頁的應用數據和后臺數據庫中的數據進行交互時會采用SQL。而SQL注入是將Web頁面的原URL、表單域或數據包輸入的參數,修改拼接
    的頭像 發表于 08-04 17:40 ?5375次閱讀

    SQL注入到Getshell的教程

    上一節,我們已經介紹了基本的SQL查詢語句,常見的SQL注入類型,DVWA靶場演示SQL注入。學習了上一節我們可以做到執行任意
    的頭像 發表于 09-21 14:45 ?3328次閱讀

    Mybatis的SQL注入審計的基本方法

    SQL注入漏洞作為WEB安全的最常見的漏洞之一,在java中隨著預編譯與各種ORM框架的使用,注入問題也越來越少。新手代碼審計者往往對Java
    的頭像 發表于 10-17 11:16 ?1510次閱讀

    超級SQL注入工具–SSQLInjection

    支持手動靈活的進行SQL注入繞過,可自定義進行字符替換等繞過注入防護。本工具為滲透測試人員、信息安全工程師等掌握SQL注入技能的人員設計,需
    的頭像 發表于 03-07 10:26 ?2511次閱讀

    sql注入漏洞解決方法有哪些?

    安全措施。 SQL注入會影響各種Web應用程序,但對于使用SQL數據庫的Web應用程序來說,這是一個最突出的問題。根據使用案例,這些數據庫可能保存有關客戶、知識產權和其他敏感信息的信息。這些敏感數據可能會以多種
    的頭像 發表于 10-07 17:29 ?5441次閱讀
    <b class='flag-5'>sql</b><b class='flag-5'>注入</b>漏洞解決方法有哪些?

    什么是SQL注入Java項目防止SQL注入方式

    Java項目防止SQL注入方式 這里總結4種:
    發表于 10-16 14:26 ?792次閱讀

    IP 地址在 SQL 注入攻擊中的作用及防范策略

    數據庫在各個領域的逐步應用,其安全性也備受關注。SQL 注入攻擊作為一種常見的數據庫攻擊手段,給網絡安全帶來了巨大威脅。今天我們來聊一聊SQL 注入攻擊的基本知識。
    的頭像 發表于 08-05 17:36 ?553次閱讀