国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Oracle數(shù)據(jù)庫SQL語句綁定變量二----安全問題

2019-11-08 20:50:37
字體:
供稿:網(wǎng)友

如果沒有使用綁定變量,就會有“SQL注入”的危險(xiǎn),下面通過一個(gè)例子來說明,這個(gè)例子摘自THomas的《Oracle編程藝術(shù)深入理解數(shù)據(jù)庫體系結(jié)構(gòu)》。

首先創(chuàng)建過程inj:

create or replace PRocedure inj(p_date in date)asl_username all_users.username%TYPE;c sys_refcursor;l_query varchar2(4000);begin  l_query := '     select username from all_users where created='''||p_date||''''; dbms_output.put_line(l_query); open c for l_query ; for i in 1 ..5 loop  fetch c into l_username;  exit when c%NOTFOUND;  dbms_output.put_line(l_username||'.....');   end loop;   close c;end;

創(chuàng)建綁定變量的過程inj1,我做了一點(diǎn)修改:

create or replace procedure inj1(p_date in date)asl_username all_users.username%TYPE;c sys_refcursor;l_query varchar2(4000);begin  l_query := '     select username from all_users where created= :date_'; dbms_output.put_line(l_query); open c for l_query using p_date; for i in 1 ..5 loop  fetch c into l_username;  exit when c%NOTFOUND;  dbms_output.put_line(l_username||'.....');   end loop;   close c;end;

創(chuàng)建一個(gè)表user_pw,默認(rèn)為這個(gè)表是非常重要的。

create table user_pw(uname varchar2(30) primary key,

                                       pw varchar2(30));

insert into user_pw values(''est','test');

commit;

下面分別執(zhí)行兩個(gè)過程,通過結(jié)果來區(qū)分:

通過兩個(gè)過程執(zhí)行結(jié)果來看,inj過程打印出了參數(shù)sysdtae的值,而綁定變量的過程inj1卻沒有,那么接下來看SQL注入:

修改session級參數(shù)nls_date_format

alter session set nls_date_format='"''union select tname from tab--"';

此時(shí)執(zhí)行inj的話,結(jié)果是:

看結(jié)果卻返回了不應(yīng)該被暴露的表的信息,這就是SQL注入的危險(xiǎn)。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 鄯善县| 都江堰市| 盐亭县| 黎城县| 当阳市| 佛冈县| 西盟| 启东市| 瑞安市| 洱源县| 肥东县| 临洮县| 久治县| 贡觉县| 平山县| 衢州市| 灵寿县| 凌云县| 屏南县| 鸡西市| 邻水| 眉山市| 普陀区| 新源县| 类乌齐县| 东兰县| 长岭县| 株洲市| 天峨县| 张掖市| 金坛市| 绥滨县| 苏州市| 灵武市| 青河县| 新绛县| 庆云县| 紫金县| 台中县| 旅游| 涞源县|