老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

2011-12-01SQL注入的防備-創新互聯

/tupian/20230522/thread-1499223-21-1.html

在彰武等地區,都構建了全面的區域性戰略布局,加強發展的系統性、市場前瞻性、產品創新能力,以專注、極致的服務理念,為客戶提供網站設計制作、成都網站建設 網站設計制作定制網站建設,公司網站建設,企業網站建設,成都品牌網站建設,營銷型網站,外貿網站制作,彰武網站建設費用合理。

207樓

我創建如下的兩張表并填入數據:

CREATE TABLE plch_names1 (name VARCHAR2 (100))
/
CREATE TABLE plch_names2 (name VARCHAR2 (100))
/
BEGIN
   INSERT INTO plch_names1 VALUES ('Paul');
   INSERT INTO plch_names1 VALUES ('Ringo');
   INSERT INTO plch_names1 VALUES ('John');
   INSERT INTO plch_names1 VALUES ('George');
   INSERT INTO plch_names2 VALUES ('Jerry');
   INSERT INTO plch_names2 VALUES ('Bob');
   INSERT INTO plch_names2 VALUES ('Phil');
   COMMIT;
END;
/

然后我創建了這個函數來返回一個游標,里面包含了指定表名的name列的數據:

CREATE OR REPLACE FUNCTION plch_get_names (table_in IN VARCHAR2)
   RETURN SYS_REFCURSOR
IS
   l_cv   SYS_REFCURSOR;
BEGIN
   OPEN l_cv FOR 'select name from ' || table_in || ' order by name';
   RETURN l_cv;
END plch_get_names;
/

這里是一個“幫手”過程來顯示這個函數所返回的數據:

CREATE OR REPLACE PROCEDURE plch_show_names (table_in IN VARCHAR2)
IS
   l_cv     SYS_REFCURSOR;
   l_name   plch_names1.name%TYPE;
BEGIN
   DBMS_OUTPUT.put_line ('Names in ' || table_in);
   l_cv := plch_get_names (table_in);
   LOOP
      FETCH l_cv INTO l_name;
      EXIT WHEN l_cv%NOTFOUND;
      DBMS_OUTPUT.put_line (l_name);
   END LOOP;
   CLOSE l_cv;
END plch_show_names;
/

當我執行下列這個代碼塊,我可以看到Beatles 和 Grateful Dead樂隊的成員。(即上述兩張表中的數據)

BEGIN
   plch_show_names ('plch_names1');
   plch_show_names ('plch_names2');
END;
/

不幸的是,如果我這樣來執行:

BEGIN
   plch_show_names (
      'plch_names2 where 1=2 union select username from all_users --');
END;
/

我看到了數據庫實例中所有用戶的名字,這屬于安全違規(是一種SQL注入)

下面哪些plch_get_names函數會拋出異常,假如調用時傳入了那個“注入”參數值,但是如果傳入像plch_names1 和 plch_names2這樣的“真實”表名你還可以看到表中數據?

(A)

BEGIN
   OPEN l_cv FOR
         'select name from '
      || DBMS_ASSERT.simple_sql_name (table_in)
      || ' order by name';
   RETURN l_cv;
END plch_get_names;

(B)

BEGIN
   DBMS_ASSERT.simple_sql_name (table_in);
   OPEN l_cv FOR 'select name from ' || table_in || ' order by name';
   RETURN l_cv;
END plch_get_names;

(C)

BEGIN
   OPEN l_cv FOR
         'select name from '
      || DBMS_ASSERT.qualified_sql_name (table_in)
      || ' order by name';
   RETURN l_cv;
END plch_get_names;

(D)

BEGIN
   OPEN l_cv FOR 'select name from :table_name order by name' USING table_in;
   RETURN l_cv;
END plch_get_names;

答案說明在209樓

2011-12-01答案AC.
DBMS_ASSERT.SIMPLE_SQL_NAME檢查一個名字是否為SQL中可用的簡單名字:
  名字必須以字母開頭,隨后可跟隨數字、字母或_, $, # 字符;
  允許帶雙引號,雙引號之間可以是任意字符;
  假如雙引號之內的名字本身就帶有雙引號,那么必須重復雙引號兩次來表示;
  輸入參數如果前后帶有空格被忽略。
  名字的長度沒有被檢測。
DBMS_ASSERT.qualified_sql_name則更寬松一些,允許帶.(小數點,比如用在記錄成員、PACKAGE里面的函數、SCHEMA OWNER等)和@ (用在DBLINK)
答案B: simple_sql_name是函數不是存儲過程,必須將返回值賦給變量。
答案D: 表名不可以用綁定變量。

當前標題:2011-12-01SQL注入的防備-創新互聯
網站鏈接:http://www.xueling.net.cn/article/jdhji.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲自拍偷拍av | 黄色影视免费看 | 成人午夜高清 | 岛国毛片在线观看 | 日韩在线成人av | 久久狠狠高潮亚洲精品 | 99久久夜色精品国产亚洲狼 | 一级毛片在线视频免费观看 | 二级特黄绝大片免费视频大片 | 无码精品日韩中文字幕 | 明星乱淫免费视频欧美 | 在线视频97 | 黄色一级片在线 | 天天碰天天摸天天操 | 日日拍夜夜 | av网站大全在线 | 97精品人妻一区二区三区香蕉 | 野花社区www在线视频 | 日韩欧美一区二区久久婷婷 | 国产午夜免费啪视频观看视频 | 小雪奶水翁胀公吸小说 | av在线天堂亚洲 | 成人性生交天码免费看 | 亚洲AV无码一区二区二三区∝ | 国产超薄丝袜足底脚交国产 | 日日夜夜操av | 西门庆一级淫片免费放 | 向往的生活第2季免费观看 被按摩师玩弄到潮喷在线播放 | 欧美一级毛片免费视频 | 成人在线不卡 | 亚洲肥老太bbw中国熟女 | 亚洲另类色区欧美日韩图片 | 超碰公开免费 | 国产真实愉拍系列在线视频 | 男人用嘴添女人私密视频 | 日本免费一区二区三区最新vr | 色射影院| 夜夜爽妓女8888888视频 | 丝袜办公室秘书啪啪到哭 | 国产精品久久久久久久乖乖 | 亚洲国产精品久久无码中文字 |