亚洲av成人精品日韩一区,97久久久精品综合88久久,玩弄japan白嫩少妇hd,亚洲av片不卡无码久久,玩弄人妻少妇500系列

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

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

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

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

馬哥Linux運(yùn)維 ? 來源:CSDN-肥肥技術(shù)宅 ? 2023-09-25 10:43 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、什么是SQL注入?

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

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

SQL案列

Stringsql="deletefromtable1whereid="+"id";

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

1001 or 1 = 1

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

Stringsql="deletefromtable1whereid=1001or1=1";

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

二、Java項(xiàng)目防止SQL注入方式

這里總結(jié)4種:

PreparedStatement防止SQL注入

mybatis中#{}防止SQL注入

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

nginx反向代理防止SQL注入

1、PreparedStatement防止SQL注入

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

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

deletefromtable1whereid=?

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

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

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

注意:

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

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

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

order by 后的條件

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

這里是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ù)對(duì)應(yīng)值
String[]values=request.getParameterValues(name);
for(inti=0;i

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

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

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

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

審核編輯:湯梓紅

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

    關(guān)注

    2

    文章

    1287

    瀏覽量

    71397
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    2989

    瀏覽量

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

    關(guān)注

    1

    文章

    783

    瀏覽量

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

    關(guān)注

    38

    文章

    3335

    瀏覽量

    59023

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

    SQL注入擴(kuò)展移位溢注

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

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

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

    sql注入攻擊實(shí)例講解

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

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

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

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

    網(wǎng)絡(luò)的廣泛應(yīng)用給社會(huì)帶來極大便捷,網(wǎng)絡(luò)安全特別是SQL 注入也成為了一個(gè)倍受關(guān)注的問題。與此同時(shí),Java Web 由于其平臺(tái)無關(guān)性、“一次編寫、隨處運(yù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注入是黑客對(duì)數(shù)據(jù)庫進(jìn)行攻擊的常用手段,今天就來介紹一下SQL注入
    的頭像 發(fā)表于 06-28 11:15 ?2475次閱讀

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

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

    SQL注入攻擊是什么 SQL注入會(huì)帶來哪些威脅

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

    SQL注入到Getshell的教程

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

    Mybatis的SQL注入審計(jì)的基本方法

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

    超級(jí)SQL注入工具–SSQLInjection

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

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

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

    什么是SQL注入Java項(xiàng)目防止SQL注入方式

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

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

    數(shù)據(jù)庫在各個(gè)領(lǐng)域的逐步應(yīng)用,其安全性也備受關(guān)注。SQL 注入攻擊作為一種常見的數(shù)據(jù)庫攻擊手段,給網(wǎng)絡(luò)安全帶來了巨大威脅。今天我們來聊一聊SQL 注入攻擊的基本知識(shí)。
    的頭像 發(fā)表于 08-05 17:36 ?632次閱讀