日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

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

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

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

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

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

<?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’;--

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

Note:

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

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

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

<?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 從重設密碼……到獲得更多權限(任何數據庫系統)

<?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...;';?>

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

Example #4 攻擊數據庫所在主機的操作系統(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 服務器會執行這條 SQL 語句,包括它后面那個用于向系統添加用戶的命令。如果這個程序是以?sa?運行而 MSSQLSERVER 服務又有足夠的權限的話,攻擊者就可以獲得一個系統帳號來訪問主機了。

Note:

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

預防措施

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

這些攻擊總是建立在發掘安全意識不強的代碼上的。所以,永遠不要信任外界輸入的數據,特別是來自于客戶端的,包括選擇框、表單隱藏域和 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()?可以代替完成這個工作。看看第一個例子,此例顯示僅在查詢的靜態部分加上引號是不夠的,查詢很容易被攻破。要不擇手段避免顯示出任何有關數據庫的信心,尤其是數據庫結構。也可以選擇使用數據庫的存儲過程和預定義指針等特性來抽象數庫訪問,使用戶不能直接訪問數據表和視圖。但這個辦法又有別的影響。

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

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日一区二区在线观看| 午夜在线一区二区| 日韩不卡手机在线v区| 一区二区三区午夜视频| 一本综合精品| 日韩国产在线一| 91国内精品| 国产劲爆久久| 福利精品一区| 亚洲高清激情| 欧美日韩国产在线一区| 亚洲一区免费| 日韩精品电影一区亚洲| 国产伦理久久久久久妇女| 亚洲18在线| 日韩av中文字幕一区| 国产精品视频一区二区三区| 久久精品亚洲一区二区| 国产成人1区| 在线视频观看日韩| 日韩制服丝袜av| 青草国产精品| 精品免费视频| 久久亚洲国产| 日本欧美在线看| 日韩一区二区三区免费视频 | 美女久久网站| 亚洲一二av| 国产精品片aa在线观看| 给我免费播放日韩视频| 亚洲先锋成人| 亚洲免费一区三区| 久久99国产精品视频| 久久天堂成人| 亚洲精品观看| 亚洲伊人av| 亚洲尤物在线| 鲁大师精品99久久久| 91精品蜜臀一区二区三区在线| 亚洲一区国产一区| 国产精品久久久久久av公交车| 欧美不卡高清一区二区三区| 午夜在线视频观看日韩17c| 日本不卡视频在线观看| 激情不卡一区二区三区视频在线| 欧美成人亚洲| 欧美日本不卡高清| 久久精品成人| 青青伊人久久| 99久久精品费精品国产| 日韩和欧美一区二区三区| 黑森林国产精品av| 中文字幕一区二区三区四区久久| 欧美aaaaaa午夜精品| 欧美在线网站| 久久av资源| 91久久亚洲| 国产精品4hu.www| 91精品91| 麻豆国产精品777777在线| 国产模特精品视频久久久久| 精品三级久久久| 亚洲人成网站在线在线观看| 日本高清不卡一区二区三区视频| 亚洲精品视频一二三区| 日韩精品免费一区二区在线观看| 91亚洲精品在看在线观看高清| 久久麻豆精品| 久久99影视| 久久亚洲美女| 不卡福利视频| 国产日韩欧美一区二区三区在线观看| 久久国产免费| 精品国产一区二区三区2021| 亚洲不卡视频| 99视频+国产日韩欧美| а√天堂中文在线资源8| 欧美私人啪啪vps| 在线一区欧美| 日本不良网站在线观看| 欧美一区影院| 日韩精品一二区| 亚洲国产专区| 日韩欧美网址| 精品国产一区二| 日韩三级精品| 国产亚洲欧洲| 成人日韩在线| 精品视频在线观看网站| 国产色噜噜噜91在线精品| 视频一区中文字幕| 亚洲黑丝一区二区| 日韩精品中文字幕第1页| 国产精品毛片视频| 亚洲人成网站在线在线观看| 女主播福利一区| 久久精品高清| 久久久久久网| 国产一区日韩| 老牛国内精品亚洲成av人片| 国产伦一区二区三区| 日本成人在线一区| 亚洲视频国产| 亚洲免费中文| 先锋影音国产一区| 亚洲少妇诱惑| 黄色成人在线网址| 欧美日一区二区| 婷婷激情一区| 桃色av一区二区| 91视频精品| 色一区二区三区| 国产成人免费av一区二区午夜| 国产精品s色| 久久丁香四色| 欧美国产日本| 精品日产乱码久久久久久仙踪林| 欧美精品福利| 国产毛片精品| 国产精品分类| 国际精品欧美精品| 狠狠躁少妇一区二区三区| 成人欧美一区二区三区的电影| 国产成人免费精品| 中文在线中文资源| 亚洲精品在线影院| 99精品美女| 五月婷婷六月综合| 国产一区白浆| 亚洲日本免费电影| 欧美亚洲专区| 精品资源在线| 中国字幕a在线看韩国电影| 欧洲av不卡| 久久蜜桃资源一区二区老牛| 蜜桃一区二区三区| 亚洲一区二区三区久久久| 日韩成人午夜精品| 国产精品15p| 国产成人免费| 999精品一区| 香蕉久久久久久久av网站| 一区二区国产在线观看| 日韩激情中文字幕| 久久免费视频66| 久久九九99| 亚洲欧美高清| 日韩av在线免费观看不卡| 国产精品资源| 国产精品黑丝在线播放| 激情欧美国产欧美| 亚洲精品动态| 麻豆视频观看网址久久| 久久久久久久久久久9不雅视频| 国产精品呻吟| 国产亚洲第一伦理第一区| 精品久久久网| 尤物网精品视频| 日韩不卡一二三区| 国产一区二区三区免费在线| 伊人久久大香线蕉av不卡| 一区二区亚洲视频| 欧美国产先锋| 九九精品调教| 亚洲精品大片| 国产成人久久| 美女国产一区| 精品在线网站观看| 日韩视频二区| 国产精品最新| 久久在线电影| 欧美伊人影院| 999精品色在线播放| 亚洲免费成人av在线| 韩国一区二区三区视频| 亚洲经典在线| 美女久久99| 亚洲黄色在线| 国产麻豆一区二区三区精品视频| 日韩av首页| 日本午夜精品久久久| 精品国模一区二区三区| 日韩一区二区三区精品| 中文字幕在线高清| 日精品一区二区三区| 欧美天堂视频| 日本欧美大码aⅴ在线播放| 群体交乱之放荡娇妻一区二区| 亚洲人成网站在线在线观看| 中文在线а√天堂| 欧美一级网站| 伊人久久亚洲影院| 国产一区二区三区四区| 麻豆亚洲精品| 麻豆成全视频免费观看在线看| 亚久久调教视频| 91精品国产91久久久久久黑人| 国产亚洲电影| 水蜜桃久久夜色精品一区的特点| 精品一区二区三区免费看|