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

首頁 > 編程 > JavaScript > 正文

php is_numberic函數造成的SQL注入漏洞

2019-11-20 20:57:47
字體:
來源:轉載
供稿:網友

一、is_numberic函數簡介
國內一部分CMS程序里面有用到過is_numberic函數,我們先看看這個函數的結構
bool is_numeric (mixed $var)
如果 var 是數字和數字字符串則返回 TRUE,否則返回 FALSE。
二、函數是否安全
接下來我們來看個例子,說明這個函數是否安全。

復制代碼 代碼如下:
$s = is_numeric($_GET['s'])?$_GET['s']:0;
$sql="insert into test(type)values($s);";  //是 values($s) 不是values('$s')
mysql_query($sql);

上面這個片段程序是判斷參數s是否為數字,是則返回數字,不是則返回0,然后帶入數據庫查詢。(這樣就構造不了sql語句)
我們把‘1 or 1' 轉換為16進制 0x31206f722031 為s參數的值
程序運行后,我們查詢數據庫看看,如下圖:

如果再重新查詢這個表的字段出來,不做過濾帶入另一個SQL語句,將會造成2次注入.
三、 總結
盡量不要使用這函數,如果要使用這個函數,建議使用規范的sql語句,條件加入單引號,這樣16進制0x31206f722031就會在數據庫里顯示出來。而不會出現1 or 1。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广平县| 东丽区| 遂溪县| 宁化县| 汾阳市| 河曲县| 余干县| 克东县| 于田县| 彝良县| 隆子县| 永福县| 五河县| 深泽县| 平昌县| 永嘉县| 都昌县| 开江县| 孙吴县| 钟祥市| 五大连池市| 郴州市| 正安县| 正宁县| 孟州市| 梁河县| 昔阳县| 金阳县| 瑞昌市| 鲜城| 南丰县| 临高县| 贵溪市| 中宁县| 梅河口市| 曲阜市| 郯城县| 漳平市| 蓝田县| 金山区| 乌海市|