當前位置:首頁 » 編程語言 » sql條件andor

sql條件andor

發布時間: 2023-11-28 23:11:37

⑴ 網站安全狗sql注入攻擊與防禦怎麼設置

網站安全狗sql注入攻擊與防禦怎麼設置?所謂SQL注入,就是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字元串,最終達到欺騙伺服器執行惡意的SQL命令。SQL防護功能主要包括檢測URL長度功能和注入的防護規則兩部分。下面我們通過實際的攻擊實例來闡述該功能:
網站安全狗下載:網站安全狗Apache版|網站安全狗IIS版
網站安全狗sql注入攻擊與防禦設置教程
1.
超長的URL鏈接測試
過長的URL對於網站來說有什麼危害呢?在網路上,曾有人對過長的URL進行測試發現,過長的URL會對流量產生影響。特別是當如果代碼里的超鏈接寫的是長URL時,就會導致網頁內容變大,嚴重影響網站出口寬頻的流量。
網站安全狗SQL注入防護功能,可以對URL長度進行設置並且將這個上限值設為通用指標來檢測URL長度,當然用戶可根據情況自己設定上限值(設置完後記得保存哦)。
具體安全狗設置和測試結果分別如下圖所示:
圖1
URL防護規則
當IE地址欄瀏覽長度超過設置的值,網站安全狗就會進行攔截,攔截頁面如下:
圖2
長鏈接測試實例
同時,通過網站安全狗的防護日誌,我們可以查看到相對應的攻擊防禦成功的日誌記錄,截圖如下:
圖3
長鏈接防護日誌
_#網站安全狗sql注入攻擊與防禦怎麼設置#_
2.網站安全狗的設計是根據攻擊特徵庫,對用戶輸入進行過濾,從而達到防護SQL注入的目的。
我們以官方第一條默認防護規則為例通過相應的攻擊實例來介紹該功能設置。
(1)當我們設置SQL攔截規則的「防止and
or方式注入」的「檢測URL」功能為「開啟」時候,截圖如下:
圖4
設置SQL攔截規則
然後我們進行SQL注入,在IE上輸入參數,進行SQL注入頁面如下:
圖5
SQL注入攻擊
由於我們已經開啟了SQL攔截規則的「防止and
or方式注入」的「檢測URL」功能,當進行類似SQL注入時候就會彈出被網站安全狗成功攔截的信息,截圖如下:
圖6
攔截提示信息
同時在網站安全狗的防護日誌中會生成對應的攻擊防禦成功的日誌記錄,截圖如下:
圖7
防護日誌
(2)當我們把SQL攔截規則的「防止and
or方式注入」的「檢測COOKIE」功能設置為「開啟」時候,截圖如下:
圖8
設置SQL防護規則
通過cookie方式進行SQL注入,注入方式如下圖所示:
圖9
cookie注入成功截圖
_網站安全狗sql注入攻擊與防禦怎麼設置#_
「開啟」SQL攔截規則的「防止and
or方式注入」的「檢測COOKIE」功能後,當進行類似SQL注入時候就會彈出被網站安全狗成功攔截的信息,截圖如下:
圖10
攔截提示信息
同時在網站安全狗的防護日誌中會生成對應的攻擊防禦成功的日誌記錄:
圖11
防護日誌
(3)把SQL攔截規則的「防止and
or方式注入」的「檢測POST內容」功能設置為「開啟」,截圖如下:
圖12
開啟檢測POST
「開啟」之後,通過POST方式進行SQL注入,測試方式如下圖所示:
圖13
通過POST方式SQL注入
由於已經「開啟」了SQL攔截規則的「防止and
or方式注入」的「檢測POST內容」功能,這時如果發現類似SQL注入的時候,就會彈出被網站安全狗的攔截信息。截圖如下:
圖14
攔截提示信息
同時在網站安全狗的防護日誌中會生成對應的攻擊防禦成功的日誌記錄,截圖如下:
圖15
防護日誌
以上是網站安全狗sql注入攻擊與防禦設置教程,希望對你有幫助!

資料庫如何進行有條件的查詢

條件
使用where子句對表中的數據篩選,結果為true的行會出現在結果集中

語法如下:

select * from 表名 where 條件;
例:
select * from students where id=1;
1
2
3
where後面支持多種運算符,進行條件的處理
比較運算符
邏輯運算符
模糊查詢
范圍查詢
空判斷

比較運算符
等於: =
大於: >
大於等於: >=
小於: <
小於等於: <=
不等於: != 或 <>

例1:查詢編號大於3的學生

select * from students where id > 3;
例:查詢編號不大於4的學生

select * from students where id <= 4;
1
2
3
4
5
6
邏輯運算符
and
or
not

例:查詢編號大於3的女同學

select * from students where id > 3 and gender=0;
1
2
3
模糊查詢
like
%表示任意多個任意字元
_表示一個任意字元

例:查詢姓黃的學生

select * from students where name like '黃%';
1
2
3
范圍查詢
in表示在一個非連續的范圍內
空判斷
注意:null與』'是不同的
判空is null

例:查詢沒有填寫身高的學生

select * from students where height is null;
判非空is not null
1
2
3
4
優先順序
優先順序由高到低的順序為:小括弧,not,比較運算符,邏輯運算符
and比or先運算,如果同時出現並希望先算or,需要結合()使用
————————————————

⑶ sql怎麼選擇數據and和or能同時用嗎

and和or能同時使用。

如下參考:

1.創建一個測試表Createtabletest_andor(idnumber,valuevarchar2(200)),如下圖。

⑷ 求一條sql語句,把資料庫表中一個欄位裡面的數據數字和文字都分開,並且生成一個相對應的列

2 命名規則
2.1 表名
XXX相關表以r_作為前綴,YYY相關表以t_作為前綴。如r_acc 、t_bcc。
後台表名盡量與前台表名相同,後台獨有的表應以_b作為後綴。如r_gggd_b。
命名應盡量反映存儲的數據內容。
2.2 視圖名
視圖以v_作為前綴。由於前台無視圖,故不需加_b。
命名應盡量體現各視圖的功能。
2.3 觸發器名
觸發器名為相應的表名加上後綴,Insert觸發器加'_i',Delete觸發器加'_d',Update觸發器加'_u',如:r_bch_i,r_bch_d,r_bch_u。
2.4 存儲過程名
存儲過程應以'sp_'開頭,後續部分主要以動賓形式構成,並用下劃線分割各個組成部分。如增加BSC機架的DRT單板的存儲過程為'sp_ins_board_drt'。
2.5 變數名
變數名採用小寫,若屬於片語形式,用下劃線分隔每個單詞,如@my_err_no。
2.6 命名中其他注意事項
以上命名都不得超過30個字元的系統限制。
變數名的長度限制為29(不包括標識字元@)。
數據對象、變數的命名都採用英文字元。禁止使用中文命名。

3 編程結構和描述
SQL SERVER系統中,一個批處理是從客戶傳給伺服器的一個完整的包,可以包含若干條SQL語句。批處理中的語句是作為一組去進行語法分析、編譯和執行的。觸發器、存儲過程等數據對象則是將批處理永久化的方法。
3.1 注釋
注釋可以包含在批處理中。在觸發器、存儲過程中包含描述性注釋將大大增加文本的可讀性和可維護性。本規范建議:
1、 注釋以英文為主。
實際應用中,發現以中文注釋的SQL語句版本在英文環境中不可用。為避免後續版本執行過程中發生某些異常錯誤,建議使用英文注釋。
2、 注釋盡可能詳細、全面。
創建每一數據對象前,應具體描述該對象的功能和用途。
傳入參數的含義應該有所說明。如果取值范圍確定,也應該一並說明。取值有特定含義的變數(如boolean類型變數),應給出每個值的含義。
3、 注釋語法包含兩種情況:單行注釋、多行注釋
單行注釋:注釋前有兩個連字元(--),最後以行尾序列(CR-LF)結束。一般,對變數、條件子句可以採用該類注釋。
多行注釋:符號/*和*/之間的內容為注釋內容。對某項完整的操作建議使用該類注釋。
4、 注釋簡潔,同時應描述清晰。
3.2 函數注釋:
編寫函數文本--如觸發器、存儲過程以及其他數據對象--時,必須為每個函數增加適當注釋。該注釋以多行注釋為主,主要結構如下:
/************************************************************************
*name : --函數名
*function : --函數功能
*input : --輸入參數
*output : --輸出參數
*author : --作者
*CreateDate : --創建時間
*UpdateDate : --函數更改信息(包括作者、時間、更改內容等)
*************************************************************************/
CREATE PROCEDURE sp_xxx

3.3 條件執行語句if…else
條件語句塊(statenemt block,以 begin…end為邊界)僅在if子句的條件為真時才被執行。為提高代碼的可讀性,建議嵌套不多於5層。還有,當嵌套層次太多時,應該考慮是否可以使用case語句。
3.4 重復執行while和跳轉語句goto
需要多次執行的語句,可以使用while結構。其中,控制while循環的條件在任何處理開始之前需要先執行一次。循環體中的保留字break無條件的退出while循環,然後繼續處理後續語句;保留字continue重新計算while條件,如果條件為真,則從循環開始處重新執行各語句。
使用跳轉語句goto和標簽label也可以方便地實現循環和其他更靈活的操作。SQL SERVER僅具有單通道語法分析器,因此不能解析對尚未創建的對象所做的前向參考。換言之,跳轉到某標簽的後續語句應該是可執行的(如不存在可能尚未創建的數據對象)。
3.5 書寫格式
資料庫伺服器端的觸發器和存儲過程是一類特殊的文本,為方便開發和維護,提高代碼的易讀性和可維護性。規范建議按照分級縮進格式編寫該文本。
順序執行的各命令位於同一級;條件語句塊(statenemt block,以 begin…end為邊界)位於下一級,類推。
SQL語句是該文本的主體。為適應某些教復雜的用戶需求,SQL語句可能比較龐大。為方便閱讀和維護,規范建議按照SQL語句中系統保留字的關鍵程度再劃分為三級。具體分級請參照下表。其中,非系統保留字(如欄位名、數據表名、標點符號)相對本級保留字再縮進一級。多個連續的非保留字可以分行書寫,也可以寫在同一行。當WHERE包含的條件子句教復雜時,應該每行只寫一個條件分句,並為重要的條件字句填寫單行注釋。
在保證基本縮進格式的前提下,可以通過對齊某些重要關鍵字(如條件關鍵字AND、OR,符號 = 、 <> 等)來進一步提高文本的易讀性和可維護性。
相鄰兩級的縮進量為10個空格。這也是ISQL編輯器默認的文本縮進量。另外,在ISQL編輯器中,一個TAB鍵也相當於10個空格。

註:按照功能,四類SQL語句(SELECT、INSERT、UPDATE、DELETE)的關鍵字可以劃分為三類:主關鍵字、次關鍵字、一般關鍵字。如下表所示:
主關鍵字 次關鍵字 一般關鍵字
SELECTINSERT (INTO)UPDATEDELETE FROMWHEREVALUESINSERT…SELECT…FROM語句中的SELECT和FROM ANDORBETWEENINLIKE

3.6 字體
系統保留字應大寫,包括系統公共變數等。其他字元(如用戶自定義變數、用戶自定義數據對象名)小寫。
需要特殊強調的部分可以大寫。
一條完整注釋語句的首字元應大寫。對某變數、某條件字句的注釋可以全部使用小寫。

通過下一節中生成表r_a的刪除觸發器的實例可以部分說明對象命名、注釋、基本書寫格式和字元大小寫方面的一些注意事項。

4 觸發器編程規范
4.1 範例
下面通過一個例子,說明觸發器編程中應遵守的規范:

/* delete related r_a according to deleted table */
CREATE TRIGGER r_a_d ON r_a
FOR DELETE
AS
IF @@ROWCOUNT = 0 -no rows deleted
RETURN

/* delete r_b table related to deleted table */
DELETE r_b
FROM r_b b, deleted d
WHERE b.id=d.id

IF @@ERROR != 0
BEGIN
RAISERROR("Error occurred deleting related records", 16, 1)
ROLLBACK TRAN
END

RETURN

作以下幾點說明:
1. 檢查是否有行被修改。注意:不論數據是否被修改,觸發器都會引發,執行情況取決於T-SQL語句的執行,而和任何潛在的where子句是否執行無關。
2. 因為被刪除行在該表中不再可用,所以應在被刪除的表中查看。
3. 檢查T-SQL語句的返回代碼,以捕獲任何出錯條件。
4.2 事務過程中的觸發器
1. 觸發器內的rollback將所有工作返回至最外層的begin tran,完成觸發器內的處理並異常終止當前的批處理。
2. 不可以從觸發器內部返回至某個已命名的事務過程,這將產生運行錯誤,掛起所有工作並終止批處理。
5 存儲過程編程規范
5.1 帶有參數的執行
在執行存儲過程時,可以通過名字來制定參數,這樣可以用任何順序傳遞參數,而且自動起到注釋的作用,因此建議編程時使用這種方法。
5.2 預設參數值
把參數的預設值定為null,這是捕獲在過程內調用存儲過程所產生的錯誤的常用方法,不應讓標准伺服器消息報告參數丟失。在給定預設之後,可以校驗該預設值並在存儲過程內採取措施。
注意,當附值SELECT語句不返回行時,局部變數將保持在SELECT語句執行之前所具有的值。建議使用系統提供的某些全局變數(如@@ROWCOUNT)檢測SELECT返回的結果。
5.3 返回值
每個存儲過程自動返回一個整數型的狀態值:成功完成時返回0,而返回-1~-99表示SQL Server檢測到了錯誤。以下為SQL Server系統常用的返回狀態碼:
值 含義
0 Procere was executed successfully
?-1 Object missing
?-2 Datatype error occurred
?-3 Process was chosen as deadlock victim
? -4 Permission error occurred
?-5 Syntax error occurred
? -6 Miscellaneous user error occurred
?-7 Resource error, such as out of space, occurred
? -8 Non-fatal internal problem encountered
?-9 System limit was reached
??-10 Fatal internal inconsistency occurred
??-11 Fatal internal inconsistency occurred
??-12 Table or index is corrupt
??-13 Database is corrupt
?-14 Hardware error occurred
在程序中,用return語句可指定大於0或小於-99的返回值,調用程序可以設置局部變數接收和檢查返回狀態。
5.4 存儲過程和事務處理
如果事務處理在存儲過程返回時的嵌套層次與執行時的層次不同,SQL Server會顯示信息提示事務處理嵌套失控。因為存儲過程並不異常終止該批處理,在執行和確認隨後的語句時,過程內的rollback tran 會導致數據完整性損失。
在編寫存儲過程時,應遵守以下原則:
1. 過程對@@trancount應無凈改變。
2. 僅當存儲過程發出begin tran語句時,才發出rollback tran。
5.5 其他注意事項
存儲過程應該堅實可靠的,因為它們是駐留在伺服器中,被頻繁使用的。應仔細檢查參數的有效性,並在有問題時返回出錯信息。應確保參數的數據類型和被比較的欄的數據類型匹配,從而避免數據類型匹配錯誤。在每個SQL語句之後要檢查@@error。

6 數據對象的國際化
6.1 關於數據對象的命名
數據對象和變數的命名一律採用英文字元。禁止使用中文命名。其他命名注意事項和規范請參考2命名規則。
6.2 關於RAISERROR
SQL SERVER 系統的RAISERROR命令能夠把某個出錯情況返回給調用過程,這對說明調用過程的執行情況很有必要;同時可以部分避免客戶端的冗餘操作。另外,結合系統存儲過程sp_addmessage和sp_dropmessage可以方便實現數據對象在SQL SERVER端的國際化。
SQL SERVER的MASTER資料庫中有錯誤信息數據表sysmessages,專門用於存儲系

⑸ 海盜王 1.38版本 架設 單機 道具包的道具ID無效

在XP上裝SQL2005和海盜1.36設置方法(包含3個必要軟體下載)

Microsoft .NET Framework 2.0 下載地址
SQL Server 2005 Express簡體中文版 (57.2MB) 下載地址(迅雷)
SQLServer2005_SSMSEE (39.8MB) 下載地址(迅雷)

所先下載以上的二個軟體.安裝過程就不講了.很簡單.
1、安裝完成後,運行「SQL Server Configuration Manager「把裡面「sql server(SQLEXPRESS)啟動。註:登陸身份為「本地服務」。

2、打開「我的電腦」---「控制面板」,新建二個用戶:account 和game

3、打開「SQL Server Management Studio Express」,伺服器名稱選"*****/SQLEXPRESS (***是你的計算機名) 身份驗證:windows身份驗證

4、追加資料庫就不講了。進入後在」安全性「--」登陸名"中新建用戶 第一個用戶:*******\account windows身份驗證 資料庫指定"accountserver" 第二個用戶:*******\game windows身份驗證 資料庫指定「GameDB" 註:*******是你的計算機名

5、到現在資料庫已完成。現在對cfg文件進行修改 //海盜王在線游戲AccountServer配置文件 [net] listen_port = 1978 listen_ip = 127.0.0.1 //監聽IP地址,用於接受GroupServer的連入 [db] dbserver = HUANG\SQLEXPRESS //這里根據你自己電腦進行修改 db = AccountServer userid = passwd = ;GateServer初始化信息文件 [Main] Name = Gate-dbz1 //本GateServer登錄到GroupServer上的唯一名字 Version =135 //本GateServer驗證客戶端的版本號,如1.01版==101 [GroupServer] IP = 127.0.0.1 //連接的GroupServer偵聽GateServer連接的偵聽IP地址 Port = 1975 //連接的GroupServer偵聽GateServer連接的偵聽TCP埠 EnablePing = 1800 //GateServer到GroupServer的Socket連接的KeepAlive值 [ToClient] IP = 0.0.0.0 //GateServer偵聽游戲客戶端連接的偵聽IP地址 Port = 1973 //GateServer偵聽游戲客戶端連接的偵聽TCP埠 CommEncrypt = 1 //到客戶端的Socket連接是否打開加密通信 EnablePing = 60 //GateServer到游戲客戶端的Socket連接的KeepAlive值初始最大連接 =1000 [ToGameServer] IP = 0.0.0.0 // 應填為內網ip地址 ,GateServer偵聽GameServer連接的偵聽IP地址 Port = 1972 //GateServer偵聽GameServer連接的偵聽TCP埠 EnablePing = 180 //GateServer到GameServer的Socket連接的KeepAlive值 [ShowRange] ShowMin = 500 // 小於等於ShowMin時顯示正常 ShowMax = 800 // 大於ShowMin並且小於等於ShowMax顯示繁忙,大於ShowMax顯示滿 IsUse=0 ;海盜王在線游戲伺服器組GroupServer配置文件 ;GroupServer啟動時會檢查資料庫的system用戶表(此表只能有一條記錄)的group_startup列,如果此列為0,表示當前沒有GroupServer在運行,本GroupServer會正常啟動,否則本GroupServer會立即退出以免重復啟動 ;GroupServer在exit命令下退出會自動清除此標志以被下次正常啟動。 [Main] Name =GroupServerAndor1 //本GroupServer登錄AccountServer的唯一名稱 Listen_Port =1975 //GroupServer偵聽GateServer連接的TCP埠 Listen_IP =0.0.0.0 //GroupServer偵聽GateServer連接的IP地址,一般應為內網IP地址 KeepAlive =1800 //如果Socket很久沒有數據傳輸,GroupServer認為Socket處於活動狀態的時間,超過此時間沒有數據即認為Socket已死 Version =103 //控制連接GateServer版本的版本號,只有版本號屬於此數字的GateServer.exe才能連接本GroupServer [AccountServer] AcctEnable =1 //0:關閉AccountServer連接;1:打開AccountServer連接 Password =GroupServerAndor1 //登錄AccountServer所使用口令 IP =127.0.0.1 //AccountServer偵聽本GroupServer連接的IP地址 Port =1978 //AccountServer偵聽本GroupServer連接的TCP埠 [Database] IP =HUANG\SQLEXPRESS //這里根據你自己電腦進行修改 DB =GameDB //資料庫名字 Login = //連接資料庫所用的用戶名 Password = // Game Server 配置文件 // 請填入所有需要建立連接的Gate信息以及該伺服器負責運作的地圖名稱 [標識] name = knightserver1 // 伺服器名稱, 不能和其他地圖伺服器重名 equment = 守護神 [網關伺服器信息] //gate = 127.0.0.1, 1971 // 連接哪一台Gate伺服器, 格式為ip地址,埠 gate = 127.0.0.1, 1972 // 連接哪一台Gate伺服器, 格式為ip地址,埠 [地圖列表] // 一個或多個地圖名 map = garner //白銀城 //map = lonetower //寂莫之塔 //map = puzzleworld //mf1 //map = puzzleworld2 //mf2 //map = teampk //98PK [游戲資料庫] // 指定數據連接信息 db_ip = HUANG\SQLEXPRESS //這里根據你自己電腦進行修改db_usr = // 進入資料庫的帳號 db_pass = // 進入資料庫的密碼, 此密碼是專門工具加密之後的結果 [Socket] keep_alive = 120 [ID基數] // 伺服器為角色分配ID的基數, 每個地圖server都不同 BaseID = 0x50000000 [實體數目] // 影響內存佔用 max_ply = 3 // 玩家數目 max_cha = 20000 // 怪物數目 max_item = 30000 // 道具數目 max_tnpc = 300 // 對話NPC數目 最後下載個136補丁就能進行游戲啦

⑹ if andor or怎麼嵌套使用

if和and和or的三者混合嵌套是:IF(AND(條件1,條件2)),IF(OR(條件1,條件2))。

單個IF函數的結構:IF(條件,結果為TRUE返回值,結果為FALSE返回值)。加入邏輯運算符「察態AND」與敗蠢源「OR」,則就是在原先的條件判斷語句上,加了一層AND或OR,結構是:

IF(AND(條件1,條件2),結果為TRUE返回值,結果為FALSE返回值)。

IF(OR(條件1,條件2),結果為TRUE返回值,結果為FALSE返回值)。

案例:2項都在90分及以上值為"優秀",有1項目90分及以上"良好",否則"一般"。

公式使用:IF(AND(B4>=90,C4>=90),"優秀",IF(OR(B4>=90,C4>=90),"良好","一檔族般"))。

注意事項

參數必須能計算為邏輯值,如 TRUE 或 FALSE,或者為包含邏輯值的數組( 用於建立可生成多個結果或可對在行和列中排列的一組參數進行運算的單個公式。數組區域共用一個公式;數組常量是用作參數的一組常量)或引用。

如果數組或引用參數中包含文本或空白單元格,則這些值將被忽略。

如果指定的區域中不包含邏輯值,函數 OR 返回錯誤值 #VALUE!。

⑺ PL/SQL 問題。。。

在原有的語句基礎上,換個思維方式看看:

CREATE OR REPLACE FUNCTION
insert_name_function
RETURN CHAR AS
num NUMBER;
BEGIN
SELECT ABS(DBMS_RANDOM.value(1,2)) INTO num FROM al;
IF num<=1 THEN
RETURN '男'
END IF;
IF num>1 THEN
RETURN '女'
END IF;
END;

不用ELSE就不會報錯了吧?

⑻ sql語句中and和or怎麼同時使用

1、創建測試表,

create table test_andor(id number, value varchar2(200));

熱點內容
荒島求生安卓怎麼下載 發布:2025-01-25 09:09:31 瀏覽:209
java中io流 發布:2025-01-25 09:02:54 瀏覽:878
華為高斯資料庫 發布:2025-01-25 08:55:38 瀏覽:30
php是動態語言 發布:2025-01-25 08:45:44 瀏覽:67
伺服器關閉了電腦網路還能用 發布:2025-01-25 08:22:28 瀏覽:587
熱血航線的登錄密碼在哪裡可以看 發布:2025-01-25 08:22:27 瀏覽:769
5系怎麼選擇配置 發布:2025-01-25 08:22:18 瀏覽:842
pythonscipy 發布:2025-01-25 08:18:52 瀏覽:419
恕瑞瑪伺服器地址 發布:2025-01-25 08:18:51 瀏覽:801
oa源碼php 發布:2025-01-25 08:11:31 瀏覽:735