国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Oracle SQL注入與PL注入剖析

數據庫 Oracle
本人很喜歡Oracle SQL注入與PL注入的代碼編寫,在工作中也很喜歡總結關于PL/SQL的語言,下面就SQL注入這個問題來詳細說說吧。

Oracle sql注入是一個古老的安全問題,一般做企業應用的只關注Java層面的編寫規范,比如使用preparedStatement,或者干脆直接過濾掉危險字符等等。其實在編寫PL/SQL的function或procedure的時候,也存在注入的問題,我們來簡單探討一下。

例如有這樣一個procedure,功能為禁用某個table的constraint:

Sql代碼

CREATE OR REPLACE PROCEDURE Disable_Constraint  ( p_constraint_name  VARCHAR2, p_table VARCHAR2 )

AUTHID CURRENT_USER

AS

p_schema VARCHAR2(32) := USER;

sql_stmt VARCHAR2(2000) := 'ALTER TABLE '

|| p_schema

|| '.'

|| p_table

|| ' DISABLE CONSTRAINT '

|| p_constraint_name ;

BEGIN

EXECUTE IMMEDIATE sql_stmt;

END;

/

了解Oracle sql注入的同學應該可以看出來,上面的procedure存在幾個危險的變量:
1. p_table
2. p_constraint_name
3. p_schema

前兩者容易發現,但為什還有p_schema呢?因為當前的USER名字也有可能是用戶構造的危險字符串。好了,根據一般規律,我們應該遵循以下順序進行修改:
1. 靜態SQL。能不使用變量就不使用。
2. 綁定變量。與Java中的PreparedStatement類似,不把數據直接拼接在sql里,而是存入變量中,直接被數據庫使用。
3. 檢查變量的值。

顯然,前兩個方法對這個procedure不適用。我們只能使用最不爽的第3個方法。好在對于Oracle SQL注入與PL注入來說,我們不用自己編寫復雜的字符判斷。Oracle有個SYS.DBMS_ASSERT包,提供了一些預置的function,如下:

NOOP No Operation. Returns string unchanged

SIMPLE_SQL_NAME Verify that the input string is a simple SQL name.

QUALIFIED_SQL_NAME Verify that the input string is a qualified SQL name.

SCHEMA_NAME This function verifies that the input string is an existing schema name.

SQL_OBJECT_NAME This function verifies that the input parameter string is a qualified SQL identifier of an existing SQL object.

ENQUOTE_NAME This function encloses a name in double quotes.

ENQUOTE_LITERAL Add leading and trailing single quotes to a string literal.

在執行這些function時,如果傳入的變量不滿足規定的格式或條件,則會拋異常,從而保護我們自己的procedure不被SQL注入。

我們判斷這些方法是否可用:

1. SIMPLE_SQL_NAME, QUALIFIED_SQL_NAME

這些方法要求用戶出入的參數本身是一個有效的sql名字。比如,如果有個table名為"Table One",那么就要求傳入的值中包含雙引號。使用這些方法存在一個問題,直接從data-dictionary讀取出來的table名字是不帶雙引號的。如果用戶直接從data-dictionary中讀取table名字,然后直接傳入我們的procedure,則會因為它不滿足simple sql name的要求而拋異常,但實際上這個table名字應該是正確的。所以不能直接使用這些function。

2. SCHEMA_NAME, SQL_OBJECT_NAME

這些方法要求傳入的參數值是數據庫中已經存在的對象名字。如果數據庫中本來有個table名為 "Table One",那么如果用戶傳入Table One,則被視為正確。使用這些方法,避免了第一個方法的data-dictionary問題,而且也能夠避免遭受類似table' -- 的問題。但存在所謂二次攻擊的問題。如果用戶提前創建了一個包含危險字符的table,然后再調用我們的procedure,依舊會造成SQL注入。

3. ENQUOTE_NAME, ENQUOTE_LITERAL

這些方法直接把參數的值用雙引號或單引號括起來。如果括起來之后的值本身還存在危險的話,會拋異常。對于我們舉例的procedure來說,只需要使用ENQUOTE_NAME。ENQUOTE_NAME需要兩個參數,一個是需要enquote的變量,另一個為是否轉換為大寫?,F在,對于我們的procedure,應該使用ENQUOTE_NAME(p_table, FALSE),保證Table One不被轉換為"TABLE ONE"。

這是我們的最終解決方案。但需要注意的是,由于使用了ENQUOTE_NAME,對于我們的procedure來說,table和constraint的名字對大小寫敏感。如果名為table_1,則必須傳入TABLE_1,否則會執行錯誤。

修改后的代碼如下:

Sql代碼

CREATE OR REPLACE PROCEDURE Disable_Constraint  ( p_constraint_name  VARCHAR2, p_table VARCHAR2 )

AUTHID CURRENT_USER

AS

p_schema VARCHAR2(32) := SYS.DBMS_ASSERT.ENQUOTE_NAME(USER, FALSE);

sql_stmt VARCHAR2(2000);

safe_table VARCHAR2(32);

safe_constraint VARCHAR2(32);

BEGIN

safe_table := SYS.DBMS_ASSERT.ENQUOTE_NAME(p_table, FALSE);

safe_constraint := SYS.DBMS_ASSERT.ENQUOTE_NAME(p_constraint_name, FALSE);

sql_stmt := 'ALTER TABLE '

|| p_schema

|| '.'

|| safe_table

|| ' DISABLE CONSTRAINT '

|| safe_constraint ;

EXECUTE IMMEDIATE sql_stmt;

END;

/
 

【編輯推薦】

  1. Oracle性能診斷不能不知的秘籍
  2. 使用dtu遠程連接Oracel 9i數據庫的方法
  3. Windows2000服務器下安裝Oracle9i與10g
  4. Oracle多表查詢優化的代碼示例
  5. Oracle更改的默認端口號剖析
責任編輯:佚名
相關推薦

2010-04-12 08:59:00

2010-12-20 16:04:30

2010-09-14 16:00:16

2009-03-27 10:53:52

注入SQLMySQL

2017-08-10 10:23:59

2009-12-16 17:58:18

2020-10-26 07:04:29

SQL注入mysql

2013-05-02 15:09:22

2017-05-05 11:31:34

2017-09-07 15:54:49

2011-10-19 10:47:56

2020-12-16 13:22:37

Web安全SQL工具

2010-11-01 17:22:44

2010-09-27 11:17:31

2020-09-28 09:30:13

mybatis

2009-07-24 10:29:29

PL SQL編程規范

2014-11-27 09:31:26

2010-09-08 13:10:03

2010-06-30 17:56:06

2017-05-08 14:33:51

點贊
收藏

51CTO技術棧公眾號

免费观看一级特黄欧美大片| 一本大道久久a久久精二百 | 精品少妇人妻av免费久久洗澡| 国内精品视频| 日韩欧美一区视频| 国产黄色特级片| 老鸭窝亚洲一区二区三区| 日本精品性网站在线观看| 美女色狠狠久久| 欧美一级片免费看| 欧美视频综合| 中文字幕一区二区三区乱码在线| 在线观看免费91| 在线精品在线| 成人国产精品av| 51亚洲精品| 国产亚洲精品久久久久久777| 在线激情网站| 午夜精品久久久久久久久| av视屏在线播放| 国产乱妇无码大片在线观看| 日韩精品久久久| 综合天堂av久久久久久久| 7m精品福利视频导航| 另类视频一区二区三区| 一本色道久久综合亚洲精品小说| 污污的网站在线看| 欧美日韩一区二区三区视频| 日本韩国一区| 狠狠做深爱婷婷久久综合一区| 2018高清国产日本一道国产| 中文成人av在线| 日韩中文字幕二区| 久久婷婷一区二区三区| 日韩小视频在线播放| 国产麻豆一精品一av一免费| 亚洲一区二区精品在线| 日本免费新一区视频 | 国产一区高清| 亚洲美女又黄又爽在线观看| 黄色在线看片| 日韩精品中文字幕在线一区| 最爽无遮挡行房视频在线| 欧美日韩卡一卡二| 在线观看免费版| 欧美另类久久久品| a级在线观看| 精品国产麻豆免费人成网站| sqte在线播放| 日韩av最新在线观看| 牛牛精品一区二区| 中文字幕少妇一区二区三区| 91麻豆精品一二三区在线| 久久久999精品免费| 免费精品一区| 97国产精品视频人人做人人爱| 精品欧美午夜寂寞影院| 日本免费久久高清视频| 清纯唯美综合亚洲| 亚洲一区二区三区777| 最新成人av网站| 亚洲精品中字| 91麻豆免费看片| 美女av网站| 精品视频在线看| 一二三四视频在线中文| 久久久精品中文字幕| 偷拍自拍亚洲色图| 91久久国产综合久久蜜月精品| 亚洲少妇一区| av在线免费观看国产| 中文字幕中文字幕一区二区| 视频午夜在线| 日韩av最新在线观看| 99re91这里只有精品| 91精品免费久久久久久久久| 天堂av在线一区| 日本三级免费网站| 黄色成人av网| 成人欧美大片| 欧美与黑人午夜性猛交久久久| 91精品一区国产高清在线gif| 日韩国产精品一区二区| 久久一区二区视频| 三级毛片在线免费看| 亚洲精品久久久一区二区三区 | 国产一区二区调教| 国产麻花豆剧传媒精品mv在线| 亚洲激情自拍偷拍| 91最新在线视频| 中文字幕精品av| 欧美自拍视频| 欧美精品中文字幕一区二区| av在线不卡免费看| 天堂a√在线| 国产亚洲精品久久久| 日韩激情免费| 成人国产在线看| 午夜精品福利一区二区三区蜜桃| a级大胆欧美人体大胆666| 538国产精品一区二区在线| 亚洲国产网站| 污版视频在线观看| 欧美成人高清电影在线| 九九在线高清精品视频| 美女黄色片网站| 色婷婷综合久久久| 视频二区欧美| 亚洲在线不卡| 欧美日韩国产丝袜美女| 999色成人| 日韩中文字幕一区| 一区二区三区欧美视频| 久久r热视频| av一区二区三区免费| 国产欧美精品一区| av中文字幕电影在线看| 91日韩在线播放| 国产女人aaa级久久久级| 成入视频在线观看| 97碰碰视频| 国产精品久久久久久久久免费丝袜| 视频在线观看入口黄最新永久免费国产| 91av在线免费观看视频| 国产成人一级电影| 午夜激情在线| 国产精品久久7| 亚洲妇熟xx妇色黄| 一区二区三区高清在线观看| 91麻豆天美传媒在线| 777午夜精品免费视频| 成人免费电影网址| 九色porny自拍| 久久精品免费播放| 精品一区二区三区在线播放| 国产福利电影在线| 国产精品久久久av| 国产女同互慰高潮91漫画| 福利一区二区三区视频在线观看| 神马影院午夜我不卡影院| 欧美日韩综合在线| 欧美日韩岛国| 四虎电影院在线观看| 国产精品igao视频| 亚洲人成网站色在线观看| 视频一区中文字幕精品| 国产v片免费观看| 亚洲人成自拍网站| 麻豆精品久久精品色综合| 免费高清完整在线观看| 成人91视频| 欧美在线免费观看亚洲| 午夜精品一区二区三区国产| 色老板在线视频| 国产成人短视频| 亚洲综合免费观看高清在线观看| 欧美美女在线直播| 2020中文字字幕在线不卡| 欧美一区二三区| 一区二区三区在线视频播放| 在线观看欧美理论a影院| 全部孕妇毛片丰满孕妇孕交| 国产成人精品一区二区| 亚洲成年人网站在线观看| 成人午夜av| 日夜干在线视频| 国产精品久久久久久久久久久久冷| 欧美视频免费在线观看| 影音国产精品| 日本aa在线| av 日韩 人妻 黑人 综合 无码| 正在播放国产一区| 久久男人中文字幕资源站| 高清国产一区二区三区四区五区| 青青在线免费视频| 色妞在线综合亚洲欧美| av在线一区二区| 日本三级久久| 色吊丝在线永久观看最新版本| 国产欧美日韩综合精品二区| 日韩一二三四区| 豆国产96在线|亚洲| 成人性生交大片免费看96| 在线观看视频污| 日本不卡二区高清三区| 最近2019年中文视频免费在线观看 | 久久精品人人做人人综合| 岛国成人av| 伊人发布在线| 免费毛片一区二区三区久久久| 亚洲国产日韩欧美在线图片| 成人av网站免费观看| 国内黄色精品| 亚洲天天影视| 亚洲理论电影在线观看| 热久久免费国产视频| 欧美一二三四在线| 国产女同性恋一区二区| 日韩视频一区| 999精品嫩草久久久久久99|