在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

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

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

一、什么是SQL注入?

SQL注入即是指web應(yīng)用程序?qū)τ脩糨斎霐?shù)據(jù)的合法性沒有判斷或過濾不嚴,攻擊者可以在web應(yīng)用程序中事先定義好的查詢語句的結(jié)尾上添加額外的SQL語句,在管理員不知情的情況下實現(xiàn)非法操作,以此來實現(xiàn)欺騙數(shù)據(jù)庫服務(wù)器執(zhí)行非授權(quán)的任意查詢,從而進一步得到相應(yīng)的數(shù)據(jù)信息。

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

SQL案列

Stringsql="deletefromtable1whereid="+"id";

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

1001 or 1 = 1

最執(zhí)行語句變?yōu)椋?/p>

Stringsql="deletefromtable1whereid=1001or1=1";

此時,數(shù)據(jù)庫的數(shù)據(jù)都會被清空掉,后果非常嚴重

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

這里總結(jié)4種:

PreparedStatement防止SQL注入

mybatis中#{}防止SQL注入

對請求參數(shù)的敏感詞匯進行過濾

nginx反向代理防止SQL注入

1、PreparedStatement防止SQL注入

PreparedStatement具有預(yù)編譯功能,以上述SQL為例

使用PreparedStatement預(yù)編譯后的SQL為:

deletefromtable1whereid=?

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

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

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

注意:

#{} :參數(shù)占位符

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

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

order by 后的條件

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

這里是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;
//獲得所有請求參數(shù)名
Enumerationnames=request.getParameterNames();
Stringsql="";
while(names.hasMoreElements()){
//得到參數(shù)名
Stringname=names.nextElement().toString();
//得到參數(shù)對應(yīng)值
String[]values=request.getParameterValues(name);
for(inti=0;i

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

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

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

if($request_method!~*GET|POST){return444;}
#使用444錯誤代碼可以更加減輕服務(wù)器負載壓力。
#防止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;}
#這里大家根據(jù)自己情況添加刪減上述判斷參數(shù),cURL、wget這類的屏蔽有點兒極端了,但要“寧可錯殺一千,不可放過一個”。
if($http_user_agent~*YisouSpider|ApacheBench|WebBench|Jmeter|JoeDog|Havij|GetRight|TurnitinBot|GrabNet|masscan|mail2000|github|wget|curl|Java|python){return508;}
#同上,大家根據(jù)自己站點實際情況來添加刪減下面的屏蔽攔截參數(shù)。
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;}#這個會影響國內(nèi)某些搜索引擎爬蟲,比如:搜狗
#攔截各惡意請求的UA,可以通過分析站點日志文件或者waf日志作為參考配置。
if($http_referer~*17ce.com){return509;}
#攔截17ce.com站點測速節(jié)點的請求,所以明月一直都說這些測速網(wǎng)站的數(shù)據(jù)僅供參考不能當(dāng)真的。
if($http_referer~*WebBench*"){return509;}
#攔截WebBench或者類似壓力測試工具,其他工具只需要更換名稱即可。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Web
    Web
    +關(guān)注

    關(guān)注

    2

    文章

    1285

    瀏覽量

    70960
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2987

    瀏覽量

    107300
  • SQL
    SQL
    +關(guān)注

    關(guān)注

    1

    文章

    782

    瀏覽量

    44908
  • 應(yīng)用程序
    +關(guān)注

    關(guān)注

    38

    文章

    3324

    瀏覽量

    58826

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

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

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    sql注入原理及預(yù)防措施

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

    SQL注入擴展移位溢注

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

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

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

    sql注入攻擊實例講解

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

    網(wǎng)絡(luò)環(huán)境的SQL注入行為檢測

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

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

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

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

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

    訓(xùn)練SQL注入的sqil-labs-master闖關(guān)游戲

    訓(xùn)練SQL注入的sqil-labs-master闖關(guān)游戲
    發(fā)表于 05-14 09:31 ?0次下載

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

    AQL的定義 SQL是操作數(shù)據(jù)庫數(shù)據(jù)的結(jié)構(gòu)化查詢語言,網(wǎng)頁的應(yīng)用數(shù)據(jù)和后臺數(shù)據(jù)庫中的數(shù)據(jù)進行交互時會采用SQL。而SQL注入是將Web頁面的原URL、表單域或數(shù)據(jù)包輸入的參數(shù),修改拼接
    的頭像 發(fā)表于 08-04 17:40 ?5416次閱讀

    SQL注入到Getshell的教程

    上一節(jié),我們已經(jīng)介紹了基本的SQL查詢語句,常見的SQL注入類型,DVWA靶場演示SQL注入。學(xué)習(xí)了上一節(jié)我們可以做到執(zhí)行任意
    的頭像 發(fā)表于 09-21 14:45 ?3383次閱讀

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

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

    超級SQL注入工具–SSQLInjection

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

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

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

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

    Java項目防止SQL注入方式 這里總結(jié)4種:
    發(fā)表于 10-16 14:26 ?818次閱讀

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

    數(shù)據(jù)庫在各個領(lǐng)域的逐步應(yīng)用,其安全性也備受關(guān)注。SQL 注入攻擊作為一種常見的數(shù)據(jù)庫攻擊手段,給網(wǎng)絡(luò)安全帶來了巨大威脅。今天我們來聊一聊SQL 注入攻擊的基本知識。
    的頭像 發(fā)表于 08-05 17:36 ?596次閱讀
    主站蜘蛛池模板: 国产大片免费观看资源 | 最近2018中文字幕免费看手机 | 天天草狠狠干 | 朱元璋传奇1998王耿豪版 | 天天夜夜狠狠 | 四虎国产视频 | 68日本xxxxxxxxx xx| 日本黄色网页 | 久草热线视频 | 久草cm| 天天操丝袜 | 色播欧美| 婷婷网五月天天综合天天爱 | 中国农村一级片 | 国产伦子一区二区三区 | 成 人色 网 站 欧美大片在线观看 | 国语一级毛片私人影院 | 最近最新视频中文字幕4 | 日韩成人黄色 | 四虎精品影院在线观看视频 | 日日噜噜噜夜夜爽爽狠狠 | 精品国产免费观看一区高清 | 黄色成人免费观看 | 菲菲国产在线观看 | 国产日韩精品一区二区在线观看 | 视频高清正版在线观看 | 日韩有色 | 国产三级在线视频观看 | 黄色一级视频网 | 国产福利观看 | 奇米第四777 | 免费看黄视频网站 | 亚洲国产女人aaa毛片在线 | 2级毛片| 天天操国产 | 欧美精品xx | 性做久久久久久久 | 成年色黄大色黄大片 视频 成年视频xxxxx免费播放软件 | 六月婷婷导航福利在线 | 欧美色图亚洲综合 | 免费啪视频观在线视频在线 |