導航:首頁 > 編程語言 > jsp防注入程序

jsp防注入程序

發布時間:2023-01-21 20:04:24

『壹』 jsp怎樣寫防sql注入。就是注冊的時候不能輸入<input type="">這樣的東西

所謂抄sql注入,給你一個例子
一般代碼襲里寫登錄校驗
"select * from uesrtable where usename = '"+aaa+"' and other = '"+bbb+"''';aaa是前台人家輸入的參數,如果不加處理,就可能被注入,因為SQL在執行的之後 『--』表示忽略以後的SQL語句,如果aaa參數是
「' or 1=1 --」那麼最後SQL就會拼成select * from uesrtable where usename = '' or 1=1 --' and other =...... 「--」之後的SQL語句會被忽略掉,在資料庫里執行也不出錯,這樣就必定能找到第1條記錄,就100%成功校驗了(實際為select * from uesrtable where usename = '' or 1=1,等同不加任何where條件)
給你一個簡單的解決方法,能解決大部分注入:對字元串處理,如果非空,則把所有的單引號替換成雙引號

『貳』 java web如何防止html,js注入

在java Web體系中,可以寫自定義標簽,過濾用戶輸入,也可以寫一個filter過濾器。比如說自定義標簽。

開發步驟:

1 寫一個標簽處理類

2在/WEB-INF/目錄下,寫一個*.tld文件,目的是讓Web容器知道自定義標簽和標簽處理類的對應關系

3 在JSP頁面中,通過<%@taglib%>指令引用標簽庫.

4 部署web應用,訪問simple.jsp即可

其中,標簽處理類可以這樣寫,轉義大於號,小於號等特殊符號。

packagecn.itcast.web.jsp.tag;

importjava.io.IOException;
importjava.io.StringWriter;

importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.PageContext;
importjavax.servlet.jsp.tagext.JspFragment;
importjavax.servlet.jsp.tagext.SimpleTagSupport;

//<simple:filter>標簽處理類
{
publicvoiddoTag()throwsJspException,IOException{
JspFragmentjspFragment=this.getJspBody();
StringWriterwriter=newStringWriter();
jspFragment.invoke(writer);
Stringtemp=writer.getBuffer().toString();
//結果必定是轉義後的字元串
temp=filter(temp);
PageContextpageContext=(PageContext)this.getJspContext();
pageContext.getOut().write(temp);
}
publicStringfilter(Stringmessage){
if(message==null)
return(null);
charcontent[]=newchar[message.length()];
message.getChars(0,message.length(),content,0);
StringBufferresult=newStringBuffer(content.length+50);
for(inti=0;i<content.length;i++){
switch(content[i]){
case'<':
result.append("&lt;");
break;
case'>':
result.append("&gt;");
break;
case'&':
result.append("&amp;");
break;
case'"':
result.append("&quot;");
break;
default:
result.append(content[i]);
}
}
return(result.toString());
}
}

『叄』 避免mysql注入應該避免有哪些特殊字元

特殊字元有:

SQL中通來配自符的使用


SQL注入式攻擊,就是攻擊者把SQL命令插入到Web表單的輸入域或頁面請求的查詢字元串,欺騙伺服器執行惡意的SQL命令。在某些表單中,用戶輸入的內容直接用來構造(或者影響)動態SQL命令,或作為存儲過程的輸入參數,這類表單特別容易受到SQL注入式攻擊。

『肆』 JSP SQL注入攻擊

防止SQL注入攻擊 永遠都是
防君子不防小人~~~
沒人敢說自己寫的程序沒有漏洞
我們只能盡自己努力去防範~~

防範方法,我知道的也是這兩種~~~
期待其他方法~

『伍』 sql防注入幾種慣用策略

1.(簡單又有效的方法)PreparedStatement
採用預編譯語句集,它內置了處理SQL注入的能力,只要使用它的setXXX方法傳值即可。
使用好處:
(1).代碼的可讀性和可維護性.
(2).PreparedStatement盡最大可能提高性能.
(3).最重要的一點是極大地提高了安全性.
原理:
sql注入只對sql語句的准備(編譯)過程有破壞作用
而PreparedStatement已經准備好了,執行階段只是把輸入串作為數據處理,
而不再對sql語句進行解析,准備,因此也就避免了sql注入問題.
2.使用正則表達式過濾傳入的參數
要引入的包:
import java.util.regex.*;
正則表達式:
private String CHECKSQL = 「^(.+)\\sand\\s(.+)|(.+)\\sor(.+)\\s$」;
判斷是否匹配:
Pattern.matches(CHECKSQL,targerStr);
下面是具體的正則表達式:
檢測SQL meta-characters的正則表達式 :
/(\%27)|(\』)|(\-\-)|(\%23)|(#)/ix
修正檢測SQL meta-characters的正則表達式 :/((\%3D)|(=))[^\n]*((\%27)|(\』)|(\-\-)|(\%3B)|(:))/i
典型的SQL 注入攻擊的正則表達式 :/\w*((\%27)|(\』))((\%6F)|o|(\%4F))((\%72)|r|(\%52))/ix
檢測SQL注入,UNION查詢關鍵字的正則表達式 :/((\%27)|(\』))union/ix(\%27)|(\』)
檢測MS SQL Server SQL注入攻擊的正則表達式:
/exec(\s|\+)+(s|x)p\w+/ix
等等…..

3.字元串過濾
比較通用的一個方法:
(||之間的參數可以根據自己程序的需要添加)
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[] = split(inj_str,"|");
for (int i=0 ; i < inj_stra.length ; i++ ){
if (str.indexOf(inj_stra[i])>=0){
return true;
}
}
return false;
}

4.jsp中調用該函數檢查是否包函非法字元

防止SQL從URL注入:
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;
}
}

5.JSP頁面判斷代碼:

使用javascript在客戶端進行不安全字元屏蔽
功能介紹:檢查是否含有」『」,」\\」,」/」
參數說明:要檢查的字元串
返回值:0:是1:不是
函數名是
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;
}

閱讀全文

與jsp防注入程序相關的資料

熱點內容
微信網頁版自動登錄 瀏覽:370
excel如何分開男女數據 瀏覽:883
帝豪gl怎麼打開u盤文件夾在哪裡 瀏覽:477
蘋果皮能用流量嗎 瀏覽:548
電腦寬頻連接共享wifi密碼 瀏覽:655
最新微粒貸app官方下載 瀏覽:923
win10電腦怎麼休眠不斷網 瀏覽:530
如何查到網站的伺服器 瀏覽:225
編程怎麼確定一個數的位數 瀏覽:362
如何安裝ae腳本文件夾 瀏覽:914
商品驗偽用什麼APP查 瀏覽:350
請問大數據與會計專業做什麼的 瀏覽:77
如何修改數據上年結轉 瀏覽:6
win7一直配置文件重啟 瀏覽:124
佳能ir2525i網路掃描 瀏覽:283
win10指紋無法識別 瀏覽:646
jsp中怎麼引入js文件 瀏覽:925
文件名構成部分 瀏覽:484
興國互聯網app有哪些 瀏覽:475
北京時間票房多少票房統計數據 瀏覽:750

友情鏈接