『壹』 sql中雙引號 " 單引號' 反單引號`的作用和區別
雙引號在最外層,是用來包含這個SQL語句的,單引號是用來包含字元串的,當表中的欄位為char或者varchar時,數據要用單引號包括起來。這兩個想必學過的都很容易理解,讓人困惑的是倒引號(反單引號)用來幹嘛的呢,其實是我們在命名欄位的時候,欄位名與SQL關鍵字沖突了,這時候要用倒引號包含一下來規避關鍵字檢測,這種情況對一個合格的程序員來說要盡量避免。
『貳』 MySQL中單引號,雙引號和反引號的區別
1、首先單引號和反引號,如圖,這里的 '圖書ID' 就使用到了單引號,而 CREATE TABLE `book` 這里的 book 就使用到了反引號。
『叄』 sql語句插入的數據中含有單引號怎麼辦
sql中,insert into yourTable(f1,f2) values(100,'abc')字元串數據是用單引號包在外面的,如果插入的數據中包含單引號,就需要處理,你可以將單引號替換成兩個單引號,在sql中連續兩個單引號就表示一個單引號字元,例如insert into yourTable(f1,f2) values(100,'ab''c')表示插入新記錄f2欄位為ab'c 使用函數replace可以實現這個功能:
『肆』 如何防範SQL注入漏洞及檢測
SQL注入漏洞攻擊的防範方法有很多種,現階段總結起來有以下方法:
(1)數據有效性校驗。如果一個輸入框只可能包括數字,那麼要通過校驗確保用戶輸入的都是數字。如果可以接受字母,那就要檢查是不是存在不可接受的字元,最好的方法是增加字元復雜度自動驗證功能。確保應用程序要檢查以下字元:分號、等號、破折號、括弧以及SQL關鍵字。另外限製表單數據輸入和查詢字元串輸入的長度也是一個好方法。如果用戶的登錄名最多隻有10個字元,那麼不要認可表單中輸入10個以上的字元,這將大大增加攻擊者在SQL命令中插入有害代碼的難度。
(2)封裝數據信息。對客戶端提交的數據進行封裝,不要將數據直接存入cookie中,方法就是在編程的代碼中,插入session、if、try、else,這樣可以有效地防止攻擊者獲取cookie中的重要信息。
(3)去除代碼中的敏感信息。將在代碼中存在的用戶名、口令信息等敏感欄位刪除,替換成輸入框。
SQL=" select from users where username = 』admin』and password= 』1234567』 "
如:這樣顯然會暴露管理員的用戶名、口令信息。可以將其修改成:
SQL= " select * from users where username='" +Txtuser.Text + "' and userpwd='" + Textpwd.Text + "'"
這樣就安全了很多,入侵者也是不會輕易的就獲取到用戶名、口令信息。
(4)替換或刪除單引號。使用雙引號替換掉所有用戶輸入的單引號,這個簡單的預防措施將在很大程度上預防SQL注入漏洞攻擊,單引號時常會無法約束插入數據的Value,可能給予輸入者不必要的許可權。用雙引號替換掉單引號可以使大部分SQL注入漏洞攻擊失敗。 如:
「select* from users where username='" + admin + "' and userpwd='" + 1234567+ "'」
顯然會得到與
「select * from users where username='admin' and password= '1234567'」
相同的結果。
(5)指定錯誤返回頁面。攻擊者有時從客戶端嘗試提交有害代碼和攻擊字元串,根據Web Service給出的錯誤提示信息來收集程序及伺服器的信息,從而獲取想得到的資料。應在Web Service中指定一個不包含任何信息的錯誤提示頁面。
(6)限制SQL字元串連接的配置文件。使用SQL變數,因為變數不是可以執行的腳本,即在Web頁面中將連接資料庫的SQL字元串替換成指定的Value,然後將Web.config文件進行加密,拒絕訪問。
(7)設置Web目錄的訪問許可權。將虛擬站點的文件目錄禁止遊客用戶(如:Guest用戶等)訪問,將User用戶許可權修改成只讀許可權,切勿將管理許可權的用戶添加到訪問列表。
(8)最小服務原則。Web伺服器應以最小許可權進行配置,只提供Web服務,這樣可以有效地阻止系統的危險命令,如ftp、cmd、vbscript等。
(9)鑒別信息加密存儲。將保存在資料庫users表中的用戶名、口令信息以密文形式保存,也可以對users表進行加密處理,這樣可以大大增加對鑒別信息訪問的安全級別。
(10)用戶許可權分離。應盡可能的禁止或刪除資料庫中sa許可權用戶的訪問,對不同的資料庫劃分不同的用戶許可權,這樣不同的用戶只能對授權給自己的資料庫執行查詢、插入、更新、刪除操作,就可以防止不同用戶對非授權的資料庫進行訪問。
『伍』 SQL注入單引號
SqlParameter到資料庫里單引號會被轉義,所以才能有效避免注入攻擊。http://msdn.microsoft.com/zh-cn/library/ms161953(v=SQL.105).aspx
『陸』 MySQL中反引號和引號的區別及用法
MySql中用一對反引號"`"來標注SQL語句中的標識,如資料庫名、表名、欄位名等。反引號是非必須的,在確保不會導致歧義發生的情況下可以省略掉,反之,例如在出現欄位名與保留關鍵字相同、標識中含空格等等情況下就需要使用,否則可能出錯。
引號則用來標注語句中所引用的字元型常量或日期/時間型常量。引號是必須的,不得省略,否則會導致系統報錯。一般情況下使用一對英文單引,也可以英文雙引號。
下面舉例示範反引號和單引號的用法
select cid,`name`,`place of birth` ,
'特殊客戶群' as remark
from client where `type of client`='student' ;
選出客戶類型為學生的記錄,列出客戶id、姓名和出生地,額外附加一個虛擬備注欄位將學生類型客戶標注為常量"特殊客戶群"
a.
select * from student where
remark="Mary's elder twin sister";
b.
select * from student where
remark='Mary''s elder twin sister';
通過備注查出瑪麗的雙胞胎姐姐的資料。
因為常量中包含英文單引號
a例使用雙引號標注字元串常量,可直接引用含單引號的字元串;
b例使用單引號標注字元串常量,字串中包含的單引號需要轉義(一個單引號寫成兩個單引號),否則會報錯。
『柒』 SQL注入防禦與繞過的幾種姿勢 – 即刻安全
當php.ini里的magic_quotes_gpc=On時。提交的變數中所有的單引號(')、雙引號(")、反斜線()與 NUL(NULL 字元)會自動轉為含有反斜線的轉義字元。
魔術引號(Magic Quote)是一個自動將進入 PHP 腳本的數據進行轉義的過程。(對所有的 GET、POST 和 COOKIE 數據自動運行轉義)
PHP 5.4 之前 PHP 指令 magic_quotes_gpc 默認是 on。
本特性已自PHP 5.3.0 起廢棄並將自 PHP 5.4.0 起移除,在PHP 5.4.O 起將始終返回 FALSE。
『捌』 sql語句插入的數據中含有單引號怎麼辦
sql中,insert
into
yourTable(f1,f2)
values(100,'abc')字元串數據是用單引號包在外面的,如果插入的數據中包含單引號,就需要處理,你可以將單引號替換成兩個單引號,在sql中連續兩個單引號就表示一個單引號字元,例如insert
into
yourTable(f1,f2)
values(100,'ab''c')表示插入新記錄f2欄位為ab'c
使用函數replace可以實現這個功能:
『玖』 sql中怎麼注入單引號的值
單引號前另外加一個單引號。我舉一個例子:SELECT 'o''liven' 注意「o」和「liven」前面有兩個單引號,但是只輸出一個運行輸出結果:插入、刪除和更新也是如此。
『拾』 怎麼繞過這個SQL注入後面的單引號
繞過不執行不知道怎麼寫
但可以讓where條件變成無意義的條件
arg="1' OR '1'='1";這樣c='"+"1' OR '1'='1"+"'。執行時應該就變成了
select * from table where c='1' OR '1'='1' ,判斷條件無意義了,即相當於 select * from table
這個網路上就有示例