⑴ 求教高手------Asp。Net中如何防止SQL注入,即如何過濾關鍵字
替換單引號,即把所有單獨出現的單引號改成兩個單引號,防止攻擊者修改SQL命令的含義。再來看前面的例子,"select * from Users where login = 』』』 or 』』1』』=』』1』 AND password = 』』』 or 』』1』』=』』1』"顯然會得到與"select * from Users where login = 』』 or 』1』=』1』 AND password = 』』 or 』1』=』1』"不同的結果。
刪除用戶輸入內容中的所有連字元,防止攻擊者構造出類如"select * from Users where login = 』mas』 —— AND password =』』"之類的查詢,因為這類查詢的後半部分已經被注釋掉,不再有效,攻擊者只要知道一個合法的用戶登錄名稱,根本不需要知道用戶的密碼就可以順利獲得訪問許可權。using System;
using System.Text.RegularExpressions;
class Test
{
static void Main()
{
Regex r = new Regex("admin|super|root");
string username = "I_am_admin";
if (r.IsMatch(username))
{
Console.WriteLine("不合法的用戶名");
}
}
}
這是一個簡單的小例子,你可以仿照這樣去做
⑵ 什麼是SQL注入
SQL注入即是指web應用程序對用戶輸入數據的合法性沒有判斷或過濾不嚴,攻擊者可以在web應用程序中事先定義好的查詢語句的結尾上添加額外的SQL語句,在管理員不知情的情況下實現非法操作,以此來實現欺騙資料庫伺服器執行非授權的任意查詢,從而進一步得到相應的數據信息。
⑶ 如何關閉bootstrap里的sql注入過濾
1. 建議關閉或刪除不必要的互動式提交表單頁面,因為他們是黑客進行SQL注入的途徑,關閉這些互動式頁面可有效的阻止某些XSS跨站腳本的攻擊與注入。而最有效的防治注入及跨站腳本攻擊的方法,是在代碼層就屏蔽掉不安全的script等危險字元。
2.. 對漏洞注入點相關代碼進行代碼及SQL注入關鍵字的過濾,以規范代碼安全性。
3. 不要在伺服器端放置備份的文件以免受到感染,或備份的文件含有漏洞,造成切入點,比如index1.asp index2.asp procts1.asp等。
⑷ sql注入 form過濾怎麼繞過
我常用的三種方法復:
1,參數制過濾,過濾掉 單引號,or,1=1 等類似這樣的 。
2,使用 參數化方法格式化 ,不使用拼接SQL 語句。
3,主要業務使用存儲過程,並在代碼里使用參數化來調用(存儲過程和方法2結合)
⑸ 如果所有關鍵字都過濾就可以防止SQL注入了么
如果所來有關鍵字都過濾,確自實可以。既然沒有關鍵字,那麼傳入的參數只是個字元串,沒有其他的效果了。
但是,這是不可能的,有些時候你不得不用到一些關鍵字,比如密碼[這裡面肯定會含有特殊字元的]
建議:採用參數化的賦值方式
我們實際做的是盡可能避免參數注入,絕對安全的程序是不存在的,只有盡可能的安全。
⑹ 如何防止sql注入
額,這是我老師給的答案 答:過濾一些常見的資料庫操作關鍵字, select ,insert,update,delete,and,*等或通過系統函數addslashes對內容進行過濾 php配置文件中register_globals=off;設置為關閉狀態.(作用將注冊全局變數關閉);如接收POST表單的值使用$_POST['user'],假設設置為ON的話$user才接收值 sql語句書寫的時候盡量不要省略小引號(tab上面那個)和單引號 提高資料庫命名技巧,對於一些重要的欄位根據程序的特點命名,使之不易被猜中 對於常的方法加以封裝,避免直接暴漏SQL語句 開啟PHP安全模式safe_mode=on 打開magic_quotes_gpc來防止SQL注入,默認為關閉,開啟後自動把用戶提交sql查詢語句進行轉換把"'"轉換成"\'" 控制錯誤信息輸出,關閉錯誤信息提示,將錯誤信息寫到系統日誌 使用MYSQLI或PDO預處理
⑺ 防sql注入到底應過濾哪些字元
一般來說,這樣處理即可:
所有參數都當作字元串處理,用單引號括起來。另外就是要把字元串中的單引號替換掉。
⑻ sql注入過程中單引號和多個關鍵字被過濾怎麼辦
很高興回答你的問題
SQL注入成功機率和選擇注入目標程序安全性有直接關系回.單就你的問題和你的思答路來說的話,你還可嘗試利用 ANSI 字元代碼變體來達到目的 比如 " 號對應 chr(34) .
是否成功取決於他本身程序是否也做了過濾.
另:還有很多方法同樣可以達到目的的.比如旁註、跨站、截取cookie 等
⑼ php如何防止sql注入
額,這是我老師給的答案
答:過濾一些常見的資料庫操作關鍵字,
select ,insert,update,delete,and,*等或通過內系統函數addslashes對內容容進行過濾
php配置文件中register_globals=off;設置為關閉狀態.(作用將注冊全局變數關閉);如接收POST表單的值使用$_POST['user'],假設設置為ON的話$user才接收值
sql語句書寫的時候盡量不要省略小引號(tab上面那個)和單引號
提高資料庫命名技巧,對於一些重要的欄位根據程序的特點命名,使之不易被猜中
對於常的方法加以封裝,避免直接暴漏SQL語句
開啟PHP安全模式safe_mode=on
打開magic_quotes_gpc來防止SQL注入,默認為關閉,開啟後自動把用戶提交sql查詢語句進行轉換把"'"轉換成"\'"
控制錯誤信息輸出,關閉錯誤信息提示,將錯誤信息寫到系統日誌
使用MYSQLI或PDO預處理
⑽ php過濾sql注入,新手
我在PHP4環境下寫了一個防SQL注入的代碼,經過實際使用在PHP5下也兼容,歡迎大家使用修改,使用。
代碼如下:
<?php
/*
sqlin 防注入類
*/
class sqlin
{
//dowith_sql($value)
function dowith_sql($str)
{
$str = str_replace("and","",$str);
$str = str_replace("execute","",$str);
$str = str_replace("update","",$str);
$str = str_replace("count","",$str);
$str = str_replace("chr","",$str);
$str = str_replace("mid","",$str);
$str = str_replace("master","",$str);
$str = str_replace("truncate","",$str);
$str = str_replace("char","",$str);
$str = str_replace("declare","",$str);
$str = str_replace("select","",$str);
$str = str_replace("create","",$str);
$str = str_replace("delete","",$str);
$str = str_replace("insert","",$str);
$str = str_replace("'","",$str);
$str = str_replace(""","",$str);
$str = str_replace(" ","",$str);
$str = str_replace("or","",$str);
$str = str_replace("=","",$str);
$str = str_replace("%20","",$str);
//echo $str;
return $str;
}
//aticle()防SQL注入函數
function sqlin()
{
foreach ($_GET as $key=>$value)
{
$_GET[$key]=$this->dowith_sql($value);
}
foreach ($_POST as $key=>$value)
{
$_POST[$key]=$this->dowith_sql($value);
}
}
}
$dbsql=new sqlin();
?>
===================================================================================
使用方式:
將以上代碼復制新建一個sqlin.php的文件,然後包含在有GET或者POST數據接收的頁面
原理:
將所有的SQL關鍵字替換為空.