国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 鹤岗市| 永州市| 晴隆县| 泰州市| 西乡县| 广平县| 元江| 罗源县| 许昌县| 米脂县| 甘孜| 石阡县| 麟游县| 自贡市| 炉霍县| 土默特左旗| 嘉峪关市| 安远县| 潞西市| 洪江市| 蛟河市| 滨州市| 柳州市| 镇安县| 明星| 迁西县| 广州市| 巴中市| 马边| 两当县| 西充县| 乐亭县| 屏南县| 金川县| 甘孜| 盐山县| 马鞍山市| 舒兰市| 浪卡子县| 峡江县| 滦南县|