免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
超強(qiáng)JSP防SQL注入攻擊

第一種采用預(yù)編譯語(yǔ)句集,它內(nèi)置了處理SQL注入的能力,只要使用它的setString方法傳值即可: 
String sql= "select * from users where username=? and password=?; 
PreparedStatement preState = conn.prepareStatement(sql); 
preState.setString(1, userName); 
preState.setString(2, password); 
ResultSet rs = preState.executeQuery(); 
... 

第二種是采用正則表達(dá)式將包含有 單引號(hào)('),分號(hào)(;) 和 注釋符號(hào)(--)的語(yǔ)句給替換掉來(lái)防止SQL注入

例1
public static String TransactSQLInjection(String str) 
{ 
return str.replaceAll(".*([';]+|(--)+).*", " "); 
} 

userName=TransactSQLInjection(userName); 
password=TransactSQLInjection(password); 

String sql="select * from users where username='"+userName+"' and password='"+password+"' " 
Statement sta = conn.createStatement(); 
ResultSet rs = sta.executeQuery(sql); 
...

或者例2

要引入的包:
import java.util.regex.*;

正則表達(dá)式:
private String CHECKSQL = “^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$”;

判斷是否匹配:
Pattern.matches(CHECKSQL,targerStr);

下面是具體的正則表達(dá)式:
檢測(cè)SQL meta-characters的正則表達(dá)式 :
/(\%27)|(\’)|(\-\-)|(\%23)|(#)/ix
修正檢測(cè)SQL meta-characters的正則表達(dá)式:/((\%3D)|(=))[^\n]*((\%27)|(\’)|(\-\-)|(\%3B)|(:))/i
典型的 SQL 注入攻擊的正則表達(dá)式:/\w*((\%27)|(\’))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
檢測(cè)SQL注入,UNION查詢(xún)關(guān)鍵字的正則表達(dá)式 :/((\%27)|(\’))union/ix(\%27)|(\’)
檢測(cè)MS SQL Server SQL注入攻擊的正則表達(dá)式:
/exec(\s|\+)+(s|x)p\w+/ix
等等…..

第三種是字符串過(guò)濾

例1

sql_inj.java為一個(gè)改進(jìn)的防注入bean,編譯后將class文件放在tomcat的classes下的sql_inj目錄中。

sql_inj.java代碼:
====================================================================
package sql_inj;

import java.net.*; 
import java.io.*;
import java.sql.*;
import java.text.*;
import java.lang.String;

public class sql_inj{ 
public static boolean sql_inj(String str)
{
    String inj_str ="'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,";//這里的東西還可以自己添加
String[] inj_stra=inj_str.split("\\|");
    for (int i=0 ; i < inj_stra.length ; i++ )
    {
        if (str.indexOf(inj_stra[i])>=0)
        {
            return true;
        }
    }
    return false;
}
}
====================================================================

JSP頁(yè)面判斷代碼:
====================================================================
<jsp:useBean id="sql_inj" class="sql_inj.sql_inj" scope="page"/>
<%
String   currenturl   =   request.getRequestURI()+(request.getQueryString()==null?"":("?"+request.getQueryString()));
if (sql_inj.sql_inj(currenturl)){ //判斷url及參數(shù)中是否包含注入代碼,是的話(huà)就跳轉(zhuǎn)到某頁(yè)。
response.sendRedirect("/");
return;
}
//out.println(currenturl);

例2 使用javascript在客戶(hù)端進(jìn)行不安全字符屏蔽

功能介紹:檢查是否含有”‘”,”\\”,”/”
參數(shù)說(shuō)明:要檢查的字符串
返回值:0:是 1:不是
函數(shù)名是
function check(a)
{
return 1;
fibdn = new Array (”‘” ,”\\”,”/”);
i=fibdn.length;
j=a.length;
for (ii=0; ii<i; ii++)
{ for (jj=0; jj<j; jj++)
{ temp1=a.charAt(jj);
temp2=fibdn[ii];
if (tem’; p1==temp2)
{ return 0; }
}
}
return 1;

}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
web攻擊之三:SQL注入攻擊的種類(lèi)和防范手段
Java讀取FTP上的txt文件
spring開(kāi)發(fā)_郵箱注冊(cè)_激活_獲取驗(yàn)證碼
Java序列化與反序列化(XStream)
java組件開(kāi)發(fā)(21)郵件發(fā)送組件mysmtp
Ext與后臺(tái)數(shù)據(jù)庫(kù)交互
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服