成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

PHP安全之數據庫安全——SQL注入及預防措施

瀏覽:8日期:2022-09-15 11:32:29

很多 web 開發(fā)者沒有注意到 SQL 查詢是可以被篡改的,因而把 SQL 查詢當作可信任的命令。殊不知道,SQL 查詢可以繞開訪問控制,從而繞過身份驗證和權限檢查。更有甚者,有可能通過 SQL 查詢去運行主機操作系統(tǒng)級的命令。

直接 SQL 命令注入就是攻擊者常用的一種創(chuàng)建或修改已有 SQL 語句的技術,從而達到取得隱藏數據,或覆蓋關鍵的值,甚至執(zhí)行數據庫主機操作系統(tǒng)命令的目的。這是通過應用程序取得用戶輸入并與靜態(tài)參數組合成 SQL 查詢來實現的。下面將會給出一些真實的例子。

由于在缺乏對輸入的數據進行驗證,并且使用了超級用戶或其它有權創(chuàng)建新用戶的數據庫帳號來連接,攻擊者可以在數據庫中新建一個超級用戶。

Example #1 一段實現數據分頁顯示的代碼……也可以被用作創(chuàng)建一個超級用戶(PostgreSQL系統(tǒng))。

<?php $offset = $argv[0]; // 注意,沒有輸入驗證! $query = 'SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;'; $result = pg_query($conn, $query);?>

一般的用戶會點擊?$offset?已被斌值的“上一頁”、“下一頁”的鏈接。原本代碼只會認為?$offset?是一個數值。然而,如果有人嘗試把以下語句先經過?urlencode()?處理,然后加入URL中的話:

0;insert into pg_shadow(usename,usesysid,usesuper,usecatupd,passwd) select ’crack’, usesysid, ’t’,’t’,’crack’ from pg_shadow where usename=’postgres’;--

那么他就可以創(chuàng)建一個超級用戶了。注意那個?0;?只不過是為了提供一個正確的偏移量以便補充完整原來的查詢,使它不要出錯而已。

Note:

--?是 SQL 的注釋標記,一般可以使用來它告訴 SQL 解釋器忽略后面的語句。

對顯示搜索結果的頁面下手是一個能得到密碼的可行辦法。攻擊者所要做的只不過是找出哪些提交上去的變量是用于 SQL 語句并且處理不當的。而這類的變量通常都被用于SELECT?查詢中的條件語句,如?WHERE, ORDER BY, LIMIT?和?OFFSET。如果數據庫支持?UNION?構造的話,攻擊者還可能會把一個完整的 SQL 查詢附加到原來的語句上以便從任意數據表中得到密碼。因此,對密碼字段加密是很重要的。

Example #2 顯示文章……以及一些密碼(任何數據庫系統(tǒng))

<?php $query = 'SELECT id, name, inserted, size FROM productsWHERE size = ’$size’ORDER BY $order LIMIT $limit, $offset;'; $result = odbc_exec($conn, $query);?>

可以在原來的查詢的基礎上添加另一個?SELECT?查詢來獲得密碼:

’union select ’1’, concat(uname||’-’||passwd) as name, ’1971-01-01’, ’0’ from usertable;--

假如上述語句(使用?’?和?--)被加入到?$query?中的任意一個變量的話,那么就麻煩了。

SQL 中的 UPDATE 也會受到攻擊。這種查詢也可能像上面的例子那樣被插入或附加上另一個完整的請求。但是攻擊者更愿意對?SET?子句下手,這樣他們就可以更改數據表中的一些數據。這種情況下必須要知道數據庫的結構才能修改查詢成功進行。可以通過表單上的變量名對字段進行猜測,或者進行暴力破解。對于存放用戶名和密碼的字段,命名的方法并不多。

Example #3 從重設密碼……到獲得更多權限(任何數據庫系統(tǒng))

<?php $query = 'UPDATE usertable SET pwd=’$pwd’ WHERE uid=’$uid’;';?>

但是惡意的用戶會把?’ or uid like’%admin%’; --?作為變量的值提交給?$uid?來改變 admin 的密碼,或者把?$pwd?的值提交為?'hehehe’, admin=’yes’, trusted=100 '(后面有個空格)去獲得更多的權限。這樣做的話,查詢語句實際上就變成了:

<?php // $uid == ’ or uid like’%admin%’; -- $query = 'UPDATE usertable SET pwd=’...’ WHERE uid=’’ or uid like ’%admin%’; --'; // $pwd == 'hehehe’, admin=’yes’, trusted=100 ' $query = 'UPDATE usertable SET pwd=’hehehe’, admin=’yes’, trusted=100 WHERE...;';?>

下面這個可怕的例子將會演示如何在某些數據庫上執(zhí)行系統(tǒng)命令。

Example #4 攻擊數據庫所在主機的操作系統(tǒng)(MSSQL Server)

<?php $query??=?'SELECT?*?FROM?products?WHERE?id?LIKE?’%$prod%’'; $result?=?mssql_query($query);?>

如果攻擊提交?a%’ exec master..xp_cmdshell ’net user test testpass /ADD’ --?作為變量?$prod的值,那么?$query?將會變成

<?php $query = 'SELECT * FROM products WHERE id LIKE ’%a%’exec master..xp_cmdshell ’net user test testpass /ADD’--'; $result = mssql_query($query);?>

MSSQL 服務器會執(zhí)行這條 SQL 語句,包括它后面那個用于向系統(tǒng)添加用戶的命令。如果這個程序是以?sa?運行而 MSSQLSERVER 服務又有足夠的權限的話,攻擊者就可以獲得一個系統(tǒng)帳號來訪問主機了。

Note:

雖然以上的例子是針對某一特定的數據庫系統(tǒng)的,但是這并不代表不能對其它數據庫系統(tǒng)實施類似的攻擊。使用不同的方法,各種數據庫都有可能遭殃。

預防措施

也許有人會自我安慰,說攻擊者要知道數據庫結構的信息才能實施上面的攻擊。沒錯,確實如此。但沒人能保證攻擊者一定得不到這些信息,一但他們得到了,數據庫有泄露的危險。如果你在用開放源代碼的軟件包來訪問數據庫,比如論壇程序,攻擊者就很容得到到相關的代碼。如果這些代碼設計不良的話,風險就更大了。

這些攻擊總是建立在發(fā)掘安全意識不強的代碼上的。所以,永遠不要信任外界輸入的數據,特別是來自于客戶端的,包括選擇框、表單隱藏域和 cookie。就如上面的第一個例子那樣,就算是正常的查詢也有可能造成災難。

永遠不要使用超級用戶或所有者帳號去連接數據庫。要用權限被嚴格限制的帳號。檢查輸入的數據是否具有所期望的數據格式。PHP 有很多可以用于檢查輸入的函數,從簡單的變量函數和字符類型函數(比如?is_numeric(),?ctype_digit())到復雜的Perl 兼容正則表達式函數都可以完成這個工作。如果程序等待輸入一個數字,可以考慮使用?is_numeric()?來檢查,或者直接使用?settype()?來轉換它的類型,也可以用?sprintf()?把它格式化為數字。

Example #5 一個實現分頁更安全的方法

<?php settype($offset, ’integer’); $query = 'SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET $offset;'; // 請注意格式字符串中的 %d,如果用 %s 就毫無意義了 $query = sprintf('SELECT id, name FROM products ORDER BY name LIMIT 20 OFFSET %d;',$offset);?>使用數據庫特定的敏感字符轉義函數(比如?mysql_escape_string()?和?sql_escape_string())把用戶提交上來的非數字數據進行轉義。如果數據庫沒有專門的敏感字符轉義功能的話?addslashes()?和?str_replace()?可以代替完成這個工作。看看第一個例子,此例顯示僅在查詢的靜態(tài)部分加上引號是不夠的,查詢很容易被攻破。要不擇手段避免顯示出任何有關數據庫的信心,尤其是數據庫結構。也可以選擇使用數據庫的存儲過程和預定義指針等特性來抽象數庫訪問,使用戶不能直接訪問數據表和視圖。但這個辦法又有別的影響。

除此之外,在允許的情況下,使用代碼或數據庫系統(tǒng)保存查詢日志也是一個好辦法。顯然,日志并不能防止任何攻擊,但利用它可以跟蹤到哪個程序曾經被嘗試攻擊過。日志本身沒用,要查閱其中包含的信息才行。畢竟,更多的信息總比沒有要好。

標簽: PHP
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
精品成人a区在线观看| 天天影视色香欲综合网老头| 亚洲va国产天堂va久久en| 黑人一区二区三区四区五区| 日韩女同互慰一区二区| 国产乱码字幕精品高清av | 视频一区视频二区中文字幕| 日韩视频三区| 日韩美女啊v在线免费观看| 欧美日韩视频| 欧美高清在线一区| 午夜精品国产| 国产欧美日韩综合精品一区二区| 成人aa视频在线观看| 欧美大胆人体bbbb| 成人免费视频app| 日韩欧美国产三级| 国产一区二区91| 日韩精品一区二区三区四区| 国产久卡久卡久卡久卡视频精品| 精品视频1区2区| 国产在线视频精品一区| 欧美剧情电影在线观看完整版免费励志电影 | 欧美大片一区| 国产精品天美传媒| 国产综合激情| 日韩伦理av电影| 日韩视频在线一区二区三区| 一区二区在线电影| 国产精品色网| 日韩成人伦理电影在线观看| 久久综合影视| 久久国产福利国产秒拍| 91精品在线一区二区| 国产精品18久久久久久久久 | 久久精品国产精品亚洲精品| 欧美日韩国产免费一区二区| 精品制服美女丁香| 91精品一区二区三区在线观看| 国产成人精品免费网站| 久久色在线视频| 亚洲精品一区二区三区香蕉| 欧美ab在线视频| 国产精品久久久久久久久动漫| 亚洲日本欧美| 午夜伦欧美伦电影理论片| 欧美三级蜜桃2在线观看| 懂色av中文一区二区三区| 国产婷婷精品av在线| 精品999网站| 午夜精品久久久久久久99樱桃| 欧美日韩亚州综合| 国产寡妇亲子伦一区二区| 26uuu亚洲综合色| 亚洲午夜精品一区二区| 亚洲欧洲综合另类在线| 色综合av在线| av成人免费在线观看| 国产精品久久久久久福利一牛影视| 日韩午夜av在线| 免费观看91视频大全| 欧美成人午夜电影| 极品裸体白嫩激情啪啪国产精品| 亚州成人在线电影| 91精品国产麻豆| 欧美另类视频在线| 天天操天天干天天综合网| 欧美精品vⅰdeose4hd| 91香蕉国产在线观看软件| 亚洲男人的天堂av| 欧美性猛片aaaaaaa做受| 成人av手机在线观看| 亚洲精品老司机| 欧美日韩一区二区不卡| 午夜国产精品视频免费体验区| 性久久久久久久| 精品精品国产高清a毛片牛牛| 在线国产日韩| 狠狠久久亚洲欧美| 欧美国产精品v| 色丁香久综合在线久综合在线观看| 成人sese在线| 亚洲一区二区三区自拍| 欧美一区二区三区喷汁尤物| 国内精品久久久久久久影视蜜臀| 日韩va亚洲va欧美va久久| 久久久亚洲精品石原莉奈| 亚洲欧美春色| 成人精品鲁一区一区二区| 亚洲男人天堂av| 欧美一激情一区二区三区| 国产午夜久久| 国产成人免费视| 亚洲综合无码一区二区| 欧美一区二区在线免费播放| 亚洲高清视频一区| 精品午夜一区二区三区在线观看| 国产日韩视频一区二区三区| 色中色一区二区| 国产一区二区三区无遮挡 | 激情视频一区二区三区| 美女尤物久久精品| 欧美成人在线免费观看| 免费成人av在线| 国产精品高清亚洲| 欧美一区二区私人影院日本| 国产欧美综合一区二区三区| 成人一区二区三区| 日韩不卡在线观看日韩不卡视频| 久久精品一区八戒影视| 欧美在线观看禁18| 伊人蜜桃色噜噜激情综合| 国产成人在线看| 亚洲电影一级片| 精品一区二区在线播放| 一区二区三区四区不卡在线 | 国产精品免费aⅴ片在线观看| 欧美日韩精品一区二区| 亚洲麻豆av| 972aa.com艺术欧美| 免费在线成人网| 1024成人网| 欧美sm极限捆绑bd| 欧美日韩在线精品一区二区三区激情| 亚洲高清电影| 欧美不卡一卡二卡免费版| 国产高清精品久久久久| 日韩精品三区四区| 最近中文字幕一区二区三区| 亚洲精品一区二区三区四区高清| 欧美视频在线观看一区二区| 欧美亚洲三区| 亚洲电影av| 亚洲欧美在线网| 不卡一区二区三区四区| 国内精品在线播放| 免费观看在线综合| 亚洲精品中文字幕乱码三区| 国产精品网站在线观看| 精品国偷自产国产一区| 制服丝袜一区二区三区| 欧美性欧美巨大黑白大战| 久久亚洲欧美| 亚洲一区尤物| 99xxxx成人网| 激情综合激情| 国产精品av一区二区| 91麻豆文化传媒在线观看| www.色精品| 成人自拍视频在线| 国产成人免费在线视频| 国产一区二区三区久久悠悠色av| 亚洲第一主播视频| 亚洲视频免费在线观看| 国产精品免费观看视频| 国产视频一区在线播放| 久久久不卡网国产精品二区| 精品国产污污免费网站入口| 日韩情涩欧美日韩视频| 欧美一区二区免费视频| 欧美日韩国产区一| 欧美日韩情趣电影| 国产九色sp调教91| 国产一区二区三区| 国产乱码精品一品二品| 精品系列免费在线观看| 久久精品国产一区二区| 日韩高清中文字幕一区| 偷拍一区二区三区四区| 亚洲国产精品久久人人爱| 亚洲h动漫在线| 五月天中文字幕一区二区| 日本视频中文字幕一区二区三区| 午夜亚洲福利老司机| 日韩电影在线观看一区| 免费成人av资源网| 另类小说图片综合网| 青青草97国产精品免费观看| 免费观看在线综合色| 精品一区二区三区免费| 国产激情一区二区三区四区| 国产成人综合网| 丁香婷婷综合激情五月色| www.日韩av| 欧美日韩蜜桃| 亚洲久色影视| 国产九九精品| 蜜桃av久久久亚洲精品| 在线观看日韩电影| 欧美剧情片在线观看| 日韩精品在线看片z| 久久色在线视频| 国产精品福利一区| 夜夜嗨av一区二区三区四季av| 亚洲国产欧美在线人成| 日韩av电影免费观看高清完整版在线观看| 日本欧美加勒比视频| 久久机这里只有精品| 国产成人8x视频一区二区| 91在线小视频|