版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Web服務(wù)器平臺(tái)安裝與配置主講人PPT時(shí)間20XX.XXCONTENTS目錄07項(xiàng)目代碼版本管理與測試02知識(shí)儲(chǔ)備08項(xiàng)目總結(jié)03安裝Web服務(wù)器操作系統(tǒng)09拓展思考04安裝并配置PHP01項(xiàng)目描述06安裝并配置Apache05安裝并配置MySQL項(xiàng)目描述01Part通過本項(xiàng)目的實(shí)訓(xùn),可以解釋W(xué)eb服務(wù)器平臺(tái)的主流的組合方式以及Web服務(wù)器平臺(tái)的構(gòu)成,能夠?qū)嵤¦eb服務(wù)器平臺(tái)的安裝與配置,具備基本的代碼版本管理能力。本項(xiàng)目對(duì)Web服務(wù)器平臺(tái)的安裝和配置進(jìn)行實(shí)訓(xùn)。本項(xiàng)目包含五個(gè)任務(wù),首先安裝WindowsServer2016Standard標(biāo)準(zhǔn)版桌面操作系統(tǒng),然后分別進(jìn)行軟件包的安裝與配置,最后完成項(xiàng)目代碼的版本管理與測試。項(xiàng)目概述學(xué)員將深入了解Web服務(wù)器平臺(tái)的構(gòu)成,提升對(duì)Web開發(fā)環(huán)境搭建的實(shí)操能力,為后續(xù)Web開發(fā)與運(yùn)維工作奠定基礎(chǔ)。技能提升本項(xiàng)目涉及多種主流技術(shù)組件的集成,有助于學(xué)員拓展知識(shí)面,理解不同技術(shù)在Web開發(fā)中的協(xié)同作用。知識(shí)拓展實(shí)訓(xùn)意義知識(shí)儲(chǔ)備02PartWindowsServer2016簡體中文標(biāo)準(zhǔn)版因易安裝性、良好兼容性被選用,適合大部分用戶操作,安裝體積也小于2019、2022版本。盡管Unix操作系統(tǒng)在生產(chǎn)環(huán)境中因開源、高性能受青睞,但本書從易操作性角度出發(fā),選擇WindowsServer桌面版。MySQL作為主流開源關(guān)系型數(shù)據(jù)庫,因體積小、速度快、成本低,被眾多中小型網(wǎng)站選用,互聯(lián)網(wǎng)巨頭如Facebook、阿里巴巴也青睞其功能與成本優(yōu)勢(shì)。除MySQL外,商業(yè)數(shù)據(jù)庫如Oracle、MicrosoftSQLServer、IBMDB2,以及非關(guān)系型數(shù)據(jù)庫如MongoDB、Redis、Memchache也各有應(yīng)用場景。Git是分布式版本控制系統(tǒng),允許多個(gè)開發(fā)者同時(shí)工作,輕松共享、推送和拉取更改,支持離線獨(dú)立工作,便于團(tuán)隊(duì)協(xié)作與代碼管理。具有強(qiáng)大分支管理功能,可創(chuàng)建、刪除、切換和合并分支,方便開發(fā)者嘗試新功能或解決方案,不影響主代碼流程,本書Web項(xiàng)目借助Git管理代碼,提高學(xué)習(xí)效率。Apache是Apache軟件基金會(huì)的HTTPServer項(xiàng)目,命名源于北美印第安人部落,以開源、穩(wěn)定、高性能著稱,廣泛應(yīng)用于Web開發(fā)。對(duì)比MicrosoftIIS商業(yè)軟件,Apache雖無商業(yè)售后,但憑借開源優(yōu)勢(shì),社區(qū)支持強(qiáng)大;與Nginx相比,Apache在功能上更為全面,適合多種開發(fā)場景。WindowsServer操作系統(tǒng)MySQL數(shù)據(jù)庫Git版本管理器ApacheWeb服務(wù)器PHP是一種通用開源腳本語言,原名PersonalHomePage,后更名為“PHP:HypertextPreprocessor”,語法融合C語言、Java和Perl特點(diǎn),入門簡單,開發(fā)效率高,主要應(yīng)用于Web開發(fā)。PHP解釋器負(fù)責(zé)將PHP腳本文件轉(zhuǎn)換為可執(zhí)行代碼,本書采用PHP7.1.16版本;VSCode作為開發(fā)工具,提供智能補(bǔ)全、語法高亮等功能,提升開發(fā)效率。PHP語言及相關(guān)工具Web服務(wù)器平臺(tái)組件安裝Web服務(wù)器操作系統(tǒng)03Part推薦在Windows10或Windows11個(gè)人版操作系統(tǒng)上,使用VMware軟件安裝WindowsServer2016操作系統(tǒng),便于測試與學(xué)習(xí)。本書采用VMwareWorkstation17Pro版本,若用戶選擇安裝虛擬機(jī),建議在虛擬機(jī)中完成各項(xiàng)測試,確保環(huán)境穩(wěn)定。虛擬機(jī)安裝1若用戶選擇在宿主機(jī)或其他計(jì)算機(jī)安裝Web服務(wù)器,需將虛擬機(jī)網(wǎng)卡設(shè)置為橋接模式,確保網(wǎng)絡(luò)訪問暢通,并關(guān)閉防火墻避免訪問攔截。宿主機(jī)安裝2WindowsServer2016Standard操作系統(tǒng)安裝完成后,建議打開文件夾“查看”菜單,勾選“文件擴(kuò)展名”和“隱藏的項(xiàng)目”,方便文件操作。實(shí)施項(xiàng)目任務(wù)需安裝三種瀏覽器:自帶IE瀏覽器(需關(guān)閉增強(qiáng)安全模式)、Firefox瀏覽器和360安全瀏覽器,以滿足不同測試需求。操作系統(tǒng)信息3安裝環(huán)境選擇開發(fā)、生產(chǎn)與測試環(huán)境網(wǎng)站開發(fā)環(huán)境需開啟全部錯(cuò)誤報(bào)告功能,便于調(diào)試;生產(chǎn)環(huán)境注重性能與安全性,會(huì)關(guān)閉錯(cuò)誤報(bào)告,通過日志監(jiān)控運(yùn)行;測試環(huán)境配置與生產(chǎn)環(huán)境一致,用于功能與性能測試。環(huán)境選擇依據(jù)根據(jù)實(shí)際需求與技術(shù)掌握程度選擇合適環(huán)境,若用戶不熟悉Unix操作系統(tǒng),建議選用WindowsServer操作系統(tǒng),確保系統(tǒng)安全與操作便捷。環(huán)境搭建注意事項(xiàng)安裝并配置PHP04Part從PHP官網(wǎng)下載php-7.1.16-Win32-VC14-x86.zip,解壓至C:\php-7.1.16-Win32-VC14-x86,VC14表示使用VisualStudio2015編譯,適配當(dāng)前系統(tǒng)環(huán)境。下載與解壓進(jìn)入解壓目錄,復(fù)制php.ini-development文件并重命名為php.ini,作為PHP的配置文件,用于自定義PHP運(yùn)行參數(shù)。配置文件生成打開php.ini,找到;extension_dir="ext",去掉分號(hào)注釋,并更改為extension_dir="C:\php-7.1.16-Win32-VC14-x86\ext",指定擴(kuò)展目錄,確保PHP擴(kuò)展模塊正確加載。去掉第904行;extension=php_mysqli.dll的分號(hào)注釋,開啟php_mysqli擴(kuò)展,該擴(kuò)展是PHP5之后推薦的數(shù)據(jù)庫擴(kuò)展,用于與MySQL數(shù)據(jù)庫交互。在第460行error_reporting=E_ALL后增加^E_DEPRECATED,設(shè)置錯(cuò)誤報(bào)警級(jí)別,報(bào)告除過時(shí)函數(shù)外的所有錯(cuò)誤,便于開發(fā)調(diào)試,但生產(chǎn)環(huán)境中需關(guān)閉錯(cuò)誤報(bào)警以防止安全風(fēng)險(xiǎn)。配置文件修改PHP安裝步驟配置文件作用php.ini文件是PHP的核心配置文件,通過修改該文件,可以調(diào)整PHP的運(yùn)行行為,如設(shè)置擴(kuò)展目錄、開啟擴(kuò)展模塊、調(diào)整錯(cuò)誤報(bào)告級(jí)別等,以滿足不同開發(fā)需求。修改后操作每次修改php.ini文件后,需重新啟動(dòng)Apache服務(wù),使配置生效,確保PHP與Apache的集成環(huán)境正常運(yùn)行,否則可能導(dǎo)致配置未生效或服務(wù)異常。開發(fā)與生產(chǎn)環(huán)境差異開發(fā)環(huán)境中開啟詳細(xì)錯(cuò)誤報(bào)告有助于快速定位問題,但在生產(chǎn)環(huán)境中,為防止錯(cuò)誤信息泄露導(dǎo)致安全風(fēng)險(xiǎn),需關(guān)閉錯(cuò)誤報(bào)告,通過日志記錄錯(cuò)誤信息進(jìn)行監(jiān)控與排查。配置要點(diǎn)說明安裝并配置MySQL05Part軟件包下載與解壓從MySQL官網(wǎng)下載免安裝版mysql-5.5.59-win32.zip,解壓至C:\mysql-5.5.59-win32,選擇免安裝版便于快速部署與使用。配置文件生成與修改將解壓目錄下的my-small.ini重命名為my.ini,在[client]部分添加default-character-set=utf8,設(shè)置默認(rèn)字符集為utf8,避免字符編碼問題。在[mysqld]部分添加basedir=C:\mysql-5.5.59-win32、datadir=C:\mysql-5.5.59-win32\data、character_set_server=utf8,指定MySQL安裝目錄、數(shù)據(jù)目錄及服務(wù)器字符集,確保MySQL正確運(yùn)行。MySQL安裝步驟服務(wù)注冊(cè)與啟動(dòng)以管理員身份打開命令提示符,使用cd命令進(jìn)入C:\mysql-5.5.59-win32\bin目錄,運(yùn)行mysqld--install命令注冊(cè)MySQL為系統(tǒng)服務(wù),運(yùn)行netstartmysql啟動(dòng)服務(wù),確保MySQL服務(wù)正常運(yùn)行。MySQL安裝步驟環(huán)境變量設(shè)置打開“控制面板\系統(tǒng)和安全\系統(tǒng)”,點(diǎn)擊“高級(jí)系統(tǒng)設(shè)置”按鈕,進(jìn)入“環(huán)境變量”設(shè)置,在“系統(tǒng)變量”中選中“path”,點(diǎn)擊“編輯”按鈕,添加C:\mysql-5.5.59-win32\bin至環(huán)境變量,使系統(tǒng)能夠識(shí)別MySQL命令。密碼設(shè)置與登錄在命令提示符中運(yùn)行mysqladmin-urootpassword123456,設(shè)置MySQLroot賬戶密碼為123456(生產(chǎn)環(huán)境中需設(shè)置復(fù)雜密碼),然后運(yùn)行mysql-uroot-p命令登錄MySQL,輸入密碼后即可進(jìn)入MySQL控制界面。MySQL安裝步驟查看字符集在mysql>提示符下輸入showvariableslike'character%';,出現(xiàn)如圖18所示的內(nèi)容則表示字符集設(shè)置成功。注意:進(jìn)入MySQL的控制界面后,命令需要以英文分號(hào)結(jié)束并回車。最后輸入exit;退出mysql。my.ini是MySQL的核心配置文件,通過修改該文件,可以設(shè)置MySQL的運(yùn)行參數(shù),如安裝目錄、數(shù)據(jù)目錄、字符集等,確保MySQL在不同環(huán)境下的正常運(yùn)行。配置文件重要性設(shè)置MySQL環(huán)境變量后,可以在任何命令提示符窗口直接運(yùn)行mysql命令,無需切換到MySQL安裝目錄,方便快捷地操作MySQL數(shù)據(jù)庫。環(huán)境變量作用將MySQL注冊(cè)為系統(tǒng)服務(wù),可以實(shí)現(xiàn)MySQL的自動(dòng)啟動(dòng)與管理,確保MySQL在系統(tǒng)啟動(dòng)時(shí)自動(dòng)運(yùn)行,提高數(shù)據(jù)庫的可用性與穩(wěn)定性。服務(wù)管理意義配置要點(diǎn)說明安裝并配置Apache06Part從Apache官網(wǎng)下載httpd-2.4.33-o102o-x86-vc14-r2.zip,解壓至C:\Apache24,選擇該版本與當(dāng)前系統(tǒng)環(huán)境適配,確保Apache穩(wěn)定運(yùn)行。軟件下載與解壓進(jìn)入C:\Apache24\conf目錄,打開httpd.conf文件,找到第38行DefineSRVROOT,將其值"/Apache24"改為"C:/Apache24",指定Apache安裝目錄。找到第262行OptionsIndexesFollowSymLinks,刪掉Indexes,修改為Options
FollowSymLinks,禁止目錄瀏覽,防止網(wǎng)站目錄信息泄露,增強(qiáng)網(wǎng)站安全性。在httpd.conf文件末尾添加三行內(nèi)容:PHPIniDir"C:/php-7.1.16-Win32-VC14-x86/"、AddTypeapplication/x-httpd-php.php.html.htm、LoadModulephp7_module"C:/php-7.1.16-Win32-VC14-x86/php7apache2_4.dll",完成PHP與Apache的集成,使Apache能夠解析PHP文件。配置文件修改以管理員身份運(yùn)行命令提示符,使用cd命令進(jìn)入C:\Apache24\bin目錄,運(yùn)行httpd-kinstall命令安裝Apache服務(wù),運(yùn)行httpd-kstart命令啟動(dòng)服務(wù),確保Apache服務(wù)正常運(yùn)行。服務(wù)安裝與啟動(dòng)Apache安裝步驟配置文件關(guān)鍵項(xiàng)httpd.conf是Apache的核心配置文件,通過修改該文件,可以調(diào)整Apache的運(yùn)行參數(shù),如指定安裝目錄、禁止目錄瀏覽、加載PHP模塊等,以滿足Web服務(wù)器的運(yùn)行需求。服務(wù)操作命令掌握Apache服務(wù)的操作命令,如安裝、啟動(dòng)、停止、重啟、卸載及配置文件測試等,可以方便地對(duì)Apache服務(wù)進(jìn)行管理與維護(hù),確保Web服務(wù)器的穩(wěn)定運(yùn)行。安全與性能優(yōu)化禁止目錄瀏覽是Apache配置中的重要安全措施,防止網(wǎng)站目錄信息泄露,保護(hù)網(wǎng)站數(shù)據(jù)安全;同時(shí),合理配置Apache參數(shù)可以優(yōu)化Web服務(wù)器的性能,提高網(wǎng)站訪問速度。配置要點(diǎn)說明項(xiàng)目代碼版本管理與測試07Part在C:\Apache24\htdocs路徑下新建test文件夾,進(jìn)入文件夾后右鍵選擇“OpenGitBashhere”啟動(dòng)Git命令行客戶端,運(yùn)行g(shù)it
init命令創(chuàng)建本地Git倉庫,為項(xiàng)目代碼管理做好準(zhǔn)備。測試環(huán)境搭建功能測試使用VS
Code打開test文件夾,新建info.php文件,輸入<?php
phpinfo();?>代碼,保存至C:\Apache24\htdocs\test\info.php,用于測試Apache、PHP和MySQL的集成環(huán)境是否正常運(yùn)行。測試文件編寫功能測試在虛擬機(jī)操作系統(tǒng)中打開IE瀏覽器,訪問http://localhost/test/info.php,若出現(xiàn)PHP信息頁面,顯示Apache、PHP和MySQL的配置信息,則表明集成環(huán)境配置成功,各組件協(xié)同工作正常。測試結(jié)果驗(yàn)證功能測試在test目錄下運(yùn)行g(shù)itinit命令,創(chuàng)建空的本地Git倉庫,生成.git隱藏文件夾,為代碼版本管理奠定基礎(chǔ),便于后續(xù)代碼提交與版本控制。設(shè)置全局姓名和郵箱地址,如gitconfig--global"bob"、gitconfig--globaluser.email"bob@163.com",然后運(yùn)行g(shù)itadd.和gitcommit-m“firstcommit.”命令,將info.php文件提交到本地倉庫,完成首次代碼提交。本地倉庫初始化提交代碼修改info.php文件后,重復(fù)gitadd.和gitcommit命令,提交新版本,使用gitlog命令查看提交歷史,通過gitcheckout命令檢出歷史版本,實(shí)現(xiàn)代碼版本的回溯與管理。在VSCode中右鍵點(diǎn)擊info.php文件,選擇“打開時(shí)間線”,對(duì)比不同提交版本的文件差異,直觀了解代碼修改內(nèi)容,便于代碼審查與問題排查。版本管理操作文件對(duì)比Git版本管理功能測試是驗(yàn)證Web服務(wù)器平臺(tái)安裝與配置是否成功的關(guān)鍵步驟,通過測試確保Apache、PHP和MySQL各組件正常運(yùn)行,集成環(huán)境穩(wěn)定可靠,為后續(xù)Web開發(fā)提供保障。測試重要性01Git版本管理器為項(xiàng)目代碼管理提供強(qiáng)大支持,通過提交、回溯、對(duì)比等功能,可以有效記錄代碼變更歷史,便于團(tuán)隊(duì)協(xié)作開發(fā)與代碼維護(hù),提高開發(fā)效率與代碼質(zhì)量。Git管理優(yōu)勢(shì)02測試與管理要點(diǎn)項(xiàng)目總結(jié)08Part本項(xiàng)目成功安裝并配置了WindowsServer2016Standard標(biāo)準(zhǔn)版桌面操作系統(tǒng)、ApacheWeb服務(wù)器、PHP和MySQL數(shù)據(jù)庫,構(gòu)成了基本的Web服務(wù)器平臺(tái),為Web開發(fā)與測試提供了運(yùn)行環(huán)境。平臺(tái)搭建完成通過實(shí)訓(xùn),學(xué)員掌握了Web服務(wù)器平臺(tái)的主流組合方式,具備了實(shí)施Web服務(wù)器平臺(tái)安裝與配置的能力,學(xué)會(huì)了基本的代碼版本管理方法,提升了Web開發(fā)與運(yùn)維的實(shí)操技能。技能提升項(xiàng)目成果實(shí)訓(xùn)價(jià)值本項(xiàng)目為學(xué)員提供了系統(tǒng)的學(xué)習(xí)與實(shí)踐機(jī)會(huì),使學(xué)員在理論與實(shí)踐相結(jié)合的過程中,深入理解Web服務(wù)器平臺(tái)的搭建流程與技術(shù)要點(diǎn),為后續(xù)深入學(xué)習(xí)Web開發(fā)與運(yùn)維奠定了堅(jiān)實(shí)基礎(chǔ)。知識(shí)拓展項(xiàng)目涉及多種主流技術(shù)組件的集成與應(yīng)用,拓寬了學(xué)員的知識(shí)面,使學(xué)員了解不同技術(shù)在Web開發(fā)中的作用與協(xié)同方式,增強(qiáng)了學(xué)員解決實(shí)際問題的能力。項(xiàng)目意義在Git客戶端運(yùn)行g(shù)itremoteaddorigin[遠(yuǎn)程倉庫地址]命令,關(guān)聯(lián)本地倉庫與遠(yuǎn)程倉庫;然后運(yùn)行g(shù)itpush-uoriginmaster命令,將本地倉庫的代碼推送到遠(yuǎn)程倉庫,完成代碼的云端備份與共享。上傳步驟上傳前需確保本地倉庫與遠(yuǎn)程倉庫關(guān)聯(lián)正確,遠(yuǎn)程倉庫地址無誤;同時(shí),需處理好本地與遠(yuǎn)程倉庫的分支關(guān)系,避免沖突。注意事項(xiàng)Git遠(yuǎn)程倉庫上傳謝謝大家主講人PPT時(shí)間20XX.XXWeb開發(fā)基礎(chǔ)主講人PPT時(shí)間20XX.XXCONTENTS目錄04靜態(tài)網(wǎng)頁開發(fā)05PHP動(dòng)態(tài)網(wǎng)頁開發(fā)01項(xiàng)目描述02知識(shí)儲(chǔ)備03MySQL數(shù)據(jù)庫的使用06項(xiàng)目總結(jié)項(xiàng)目描述01Part通過本項(xiàng)目實(shí)訓(xùn),學(xué)員能夠編寫基本SQL語句管理MySQL數(shù)據(jù)庫,掌握HTML、JavaScript、CSS和PHP編寫的網(wǎng)頁,進(jìn)行靜態(tài)和動(dòng)態(tài)PHP網(wǎng)頁開發(fā)。01項(xiàng)目包含三個(gè)任務(wù):SQL語言和MySQL數(shù)據(jù)庫使用、靜態(tài)網(wǎng)頁設(shè)計(jì)、動(dòng)態(tài)網(wǎng)頁開發(fā),為Web開發(fā)奠定基礎(chǔ)。02項(xiàng)目目標(biāo)任務(wù)一:學(xué)習(xí)基本SQL語言和MySQL數(shù)據(jù)庫的使用,包括數(shù)據(jù)庫和數(shù)據(jù)表的創(chuàng)建及數(shù)據(jù)操作。任務(wù)二:綜合使用HTML、CSS和JavaScript設(shè)計(jì)一個(gè)靜態(tài)網(wǎng)頁,展示用戶信息。任務(wù)三:使用PHP語言將靜態(tài)網(wǎng)頁修改為動(dòng)態(tài)網(wǎng)頁,實(shí)現(xiàn)從數(shù)據(jù)庫讀取數(shù)據(jù)并動(dòng)態(tài)展示。010203項(xiàng)目內(nèi)容01本項(xiàng)目覆蓋Web開發(fā)的前端和后端基礎(chǔ),幫助學(xué)員理解Web開發(fā)的基本流程和關(guān)鍵技術(shù)。02通過實(shí)踐操作,學(xué)員能夠掌握靜態(tài)和動(dòng)態(tài)網(wǎng)頁開發(fā)的區(qū)別與聯(lián)系,為后續(xù)學(xué)習(xí)Web漏洞及防護(hù)打下基礎(chǔ)。項(xiàng)目意義知識(shí)儲(chǔ)備02Part數(shù)據(jù)庫管理系統(tǒng)(DBMS)DBMS是用于建立、使用和維護(hù)數(shù)據(jù)庫的大型軟件,如Oracle、MySQL、SQLServer等。DBMS支持事務(wù)的完整性和一致性,適用于要求數(shù)據(jù)準(zhǔn)確的系統(tǒng),如銀行系統(tǒng)。數(shù)據(jù)庫系統(tǒng)(DBS)DBS包括DBMS、數(shù)據(jù)庫、操作系統(tǒng)和數(shù)據(jù)庫管理員等。關(guān)系型數(shù)據(jù)庫采用關(guān)系模型組織數(shù)據(jù),以二維表的形式存儲(chǔ),支持事務(wù)處理。SQL語言SQL是關(guān)系數(shù)據(jù)庫的操作語言,包括DDL、DML、DCL和TCL。DDL用于定義數(shù)據(jù)庫結(jié)構(gòu),DML用于數(shù)據(jù)操作,DCL用于權(quán)限管理,TCL用于事務(wù)控制。數(shù)據(jù)庫管理系統(tǒng)基本概念HTML是萬維網(wǎng)的描述語言,通過標(biāo)簽標(biāo)識(shí)網(wǎng)頁內(nèi)容的顯示方式。HTML5是目前主流版本,支持多種網(wǎng)絡(luò)資源的呈現(xiàn)形式。HTMLCSS用于定義HTML文件的樣式,通過選擇器和聲明組控制元素的顯示效果。CSS支持多種選擇器,如元素選擇器、類選擇器、ID選擇器等。CSSJavaScript是一種腳本語言,用于向HTML頁面添加交互行為。JavaScript代碼可以嵌入HTML文件中,也可以單獨(dú)作為一個(gè)文件使用。JavaScript010203網(wǎng)頁設(shè)計(jì)前端語言動(dòng)態(tài)網(wǎng)頁與靜態(tài)網(wǎng)頁靜態(tài)網(wǎng)頁是純HTML格式,內(nèi)容固定不變。動(dòng)態(tài)網(wǎng)頁在服務(wù)器端運(yùn)行,根據(jù)條件返回不同的內(nèi)容,支持用戶與服務(wù)器交互。PHP與HTML混合編寫PHP腳本可以與HTML標(biāo)簽混合編寫,但推薦使用前后端分離和MVC模型。PHP語言PHP是一種腳本語言,用于服務(wù)器端的動(dòng)態(tài)網(wǎng)頁設(shè)計(jì)。PHP文件由服務(wù)器解釋執(zhí)行,結(jié)果以HTML形式返回給瀏覽器。網(wǎng)頁設(shè)計(jì)后端語言PHPMySQL數(shù)據(jù)庫的使用03Part使用SQL語句CREATEDATABASEfirstlab;創(chuàng)建數(shù)據(jù)庫。使用USEfirstlab;切換到創(chuàng)建的數(shù)據(jù)庫。數(shù)據(jù)庫操作數(shù)據(jù)庫操作使用DDL語句,如創(chuàng)建、修改、查看和刪除數(shù)據(jù)庫。數(shù)據(jù)庫設(shè)計(jì)是Web項(xiàng)目開發(fā)的重要內(nèi)容,需根據(jù)業(yè)務(wù)需求設(shè)計(jì)合理的數(shù)據(jù)庫結(jié)構(gòu)。02創(chuàng)建數(shù)據(jù)庫01數(shù)據(jù)庫定義查看表結(jié)構(gòu)使用DESCusers;查看表的結(jié)構(gòu),了解字段信息??梢酝ㄟ^ALTERTABLE語句添加新字段,如email字段。創(chuàng)建數(shù)據(jù)表使用SQL語句創(chuàng)建用戶表users,包括id、username和passcode字段。id字段設(shè)置為主鍵并自增,username字段設(shè)置為唯一索引。數(shù)據(jù)表定義使用INSERTINTO語句向表中添加記錄。使用SELECT語句查詢表中的記錄。使用UPDATE語句更新表中的記錄。使用DELETE語句刪除表中的記錄。數(shù)據(jù)增刪改查MySQL支持用戶權(quán)限管理,通過CREATEUSER和GRANT語句創(chuàng)建用戶并授權(quán)。權(quán)限管理可以限制用戶對(duì)數(shù)據(jù)庫的操作,提高數(shù)據(jù)庫的安全性。權(quán)限管理數(shù)據(jù)表操作靜態(tài)網(wǎng)頁開發(fā)04Part創(chuàng)建HTML文件user.html,使用HTML標(biāo)簽定義網(wǎng)頁結(jié)構(gòu)。包括<!DOCTYPEhtml>聲明、<html>、<head>、<body>等標(biāo)簽。HTML文件結(jié)構(gòu)在網(wǎng)頁中使用<table>標(biāo)簽創(chuàng)建表格,顯示用戶賬號(hào)、密碼和電子郵件地址。表格內(nèi)容固定不變,修改顯示內(nèi)容需要修改網(wǎng)頁源代碼。表格顯示用戶信息創(chuàng)建HTML靜態(tài)網(wǎng)頁使用CSS對(duì)HTML頁面進(jìn)行布局和樣式設(shè)置。CSS可以通過內(nèi)聯(lián)、內(nèi)部和外部樣式表的方式使用。CSS樣式定義01使用CSS選擇器(如元素選擇器、類選擇器、ID選擇器)定義HTML元素的樣式。通過<link>標(biāo)簽引入外部CSS文件,實(shí)現(xiàn)全局樣式定義。CSS選擇器02CSS的使用在HTML文件中添加JavaScript代碼,顯示當(dāng)前時(shí)間。使用<span>標(biāo)簽顯示時(shí)間,并通過JavaScript動(dòng)態(tài)更新時(shí)間內(nèi)容。JavaScript代碼01盡管顯示時(shí)間動(dòng)態(tài)更新,但網(wǎng)頁內(nèi)容固定不變,仍屬于靜態(tài)網(wǎng)頁。靜態(tài)網(wǎng)頁的特點(diǎn)02使用JavaScript顯示當(dāng)前時(shí)間PHP動(dòng)態(tài)網(wǎng)頁開發(fā)05PartPHP代碼嵌入HTML將HTML文件user.html復(fù)制并重命名為user_php.html。在文件首行添加PHP代碼,連接MySQL數(shù)據(jù)庫并查詢用戶信息。使用PHP函數(shù)outputusers()將查詢結(jié)果以表格形式動(dòng)態(tài)顯示在網(wǎng)頁中。修改數(shù)據(jù)庫中的記錄,網(wǎng)頁顯示的數(shù)據(jù)會(huì)相應(yīng)變化。動(dòng)態(tài)顯示數(shù)據(jù)PHP與HTML混合編寫動(dòng)態(tài)網(wǎng)頁的內(nèi)容由數(shù)據(jù)庫中的數(shù)據(jù)驅(qū)動(dòng),不需要修改網(wǎng)頁源代碼。動(dòng)態(tài)網(wǎng)頁支持用戶與服務(wù)器的交互,可以根據(jù)用戶輸入或數(shù)據(jù)庫狀態(tài)動(dòng)態(tài)生成內(nèi)容。數(shù)據(jù)驅(qū)動(dòng)動(dòng)態(tài)網(wǎng)頁需要注意安全性問題,如XSS跨站攻擊等。注意事項(xiàng)動(dòng)態(tài)網(wǎng)頁的特點(diǎn)項(xiàng)目總結(jié)06Part01本項(xiàng)目為Web開發(fā)基礎(chǔ)實(shí)訓(xùn),涵蓋了數(shù)據(jù)庫、前端和后端開發(fā)的基本知識(shí)。02學(xué)員通過項(xiàng)目實(shí)踐,掌握了靜態(tài)和動(dòng)態(tài)網(wǎng)頁開發(fā)的方法。項(xiàng)目成果0201數(shù)據(jù)庫權(quán)限管理是生產(chǎn)環(huán)境中的重要環(huán)節(jié),需合理設(shè)置用戶權(quán)限。數(shù)據(jù)庫和網(wǎng)頁文件的字符集應(yīng)保持一致,避免亂碼問題。注意事項(xiàng)本項(xiàng)目為后續(xù)Web漏洞及防護(hù)項(xiàng)目提供了基礎(chǔ),幫助學(xué)員理解Web開發(fā)的基本原理和流程。項(xiàng)目意義謝謝大家主講人PPT時(shí)間20XX.XX萬能密碼登錄—Post型注入攻擊主講人PPT時(shí)間20XX.XXCATALOGUE目錄1.項(xiàng)目描述知識(shí)儲(chǔ)備2.創(chuàng)建數(shù)據(jù)庫3.建立基于Session驗(yàn)證的用戶登錄網(wǎng)站4.萬能密碼SQL注入攻擊測試5.萬能密碼SQL注入攻擊防護(hù)6.項(xiàng)目總結(jié)7.項(xiàng)目描述01Part本項(xiàng)目旨在通過實(shí)訓(xùn),使學(xué)員能夠解釋和分析萬能密碼登錄漏洞的Post型SQL注入原理及危害,并應(yīng)用多種方式實(shí)現(xiàn)SQL注入攻擊的防護(hù)。項(xiàng)目目標(biāo)任務(wù)一:建立用戶信息數(shù)據(jù)庫。任務(wù)二:開發(fā)基于Session驗(yàn)證的用戶登錄功能網(wǎng)站,使用Post方式提交用戶參數(shù)。任務(wù)三:實(shí)現(xiàn)基于SQL注入的萬能密碼登錄。任務(wù)四:分析萬能密碼SQL注入原理,實(shí)現(xiàn)多種防護(hù)方式。項(xiàng)目任務(wù)通過本項(xiàng)目實(shí)訓(xùn),學(xué)員可以深入理解Post型SQL注入攻擊的原理和危害,掌握多種防護(hù)方法,為Web安全開發(fā)提供實(shí)踐基礎(chǔ)。項(xiàng)目意義知識(shí)儲(chǔ)備02PartGet方式將數(shù)據(jù)以“變量=值”的形式附加到URL后,各變量間用“&”連接,數(shù)據(jù)直接暴露在URL中,安全性較低。Get方式Post方式將表單數(shù)據(jù)放在請(qǐng)求體中,相對(duì)隱蔽,適合傳輸大量數(shù)據(jù),但并非絕對(duì)安全,仍可能被攔截或篡改。Post方式Get方式數(shù)據(jù)在URL中可見,長度受限;Post方式數(shù)據(jù)在請(qǐng)求體中,長度不受限,相對(duì)安全但需正確處理。主要區(qū)別HTML的Post與Get提交信息方式01.HTTP協(xié)議的無狀態(tài)性HTTP協(xié)議無狀態(tài),每個(gè)請(qǐng)求獨(dú)立,服務(wù)器不保存連接狀態(tài),適合瀏覽靜態(tài)文件,但不適合需要狀態(tài)保持的應(yīng)用。02.Session機(jī)制的作用Session機(jī)制通過在服務(wù)器端保存用戶信息,在客戶端保存SessionID,實(shí)現(xiàn)用戶狀態(tài)的保持,常用于登錄驗(yàn)證。Session機(jī)制的原理用戶賬號(hào)信息提交用戶在登錄表單輸入賬號(hào)和密碼,通過Post或Get方式提交給服務(wù)器,服務(wù)器驗(yàn)證后創(chuàng)建Session并返回SessionID。在Web服務(wù)器建立Session會(huì)話服務(wù)器驗(yàn)證用戶信息后,調(diào)用session_start()創(chuàng)建會(huì)話,將用戶信息保存在$_SESSION數(shù)組中,客戶端保存SessionID。退出登錄用戶關(guān)閉瀏覽器或主動(dòng)退出登錄時(shí),服務(wù)器端的Session信息應(yīng)被清除,防止攻擊者利用SessionID繞過登錄驗(yàn)證?;赟ession機(jī)制的Web登錄驗(yàn)證過程萬能密碼是通過在用戶名或密碼中構(gòu)造特殊SQL語句,破壞原有SQL語句結(jié)構(gòu),繞過登錄驗(yàn)證的一種SQL注入攻擊方式。萬能密碼的定義01用戶輸入的特殊字符串(如'or1=1or')被代入SQL語句后,改變了查詢條件的邏輯,使查詢條件恒成立,從而繞過登錄驗(yàn)證。攻擊原理02萬能密碼SQL注入攻擊的原理攻擊者可篡改網(wǎng)頁內(nèi)容,植入惡意代碼或鏈接,對(duì)用戶造成安全威脅。篡改網(wǎng)頁內(nèi)容、網(wǎng)頁掛馬攻擊者可能獲取網(wǎng)站控制權(quán),甚至進(jìn)一步控制服務(wù)器,造成嚴(yán)重安全問題??刂凭W(wǎng)站、服務(wù)器攻擊者可繞過正常登錄驗(yàn)證,非法訪問系統(tǒng)資源。繞過登錄檢查獲取、篡改數(shù)據(jù)庫信息攻擊者可非法獲取、修改或刪除數(shù)據(jù)庫中的數(shù)據(jù),導(dǎo)致數(shù)據(jù)泄露或損壞。SQL注入攻擊的危害創(chuàng)建數(shù)據(jù)庫03Part腳本內(nèi)容數(shù)據(jù)庫設(shè)計(jì)注意事項(xiàng)密碼存儲(chǔ)方式本書為演示方便,密碼以明文存儲(chǔ),實(shí)際開發(fā)中應(yīng)采用加密存儲(chǔ)方式,如哈希算法,保護(hù)用戶隱私。數(shù)據(jù)庫設(shè)計(jì)應(yīng)滿足業(yè)務(wù)需求,合理規(guī)劃表結(jié)構(gòu)和字段類型,確保數(shù)據(jù)存儲(chǔ)和查詢效率。在VSCode中創(chuàng)建lab.sql文件,定義數(shù)據(jù)庫lab和表users,插入兩條用戶記錄,為后續(xù)登錄功能提供數(shù)據(jù)支持。創(chuàng)建SQL腳本導(dǎo)入方法以管理員身份登錄MySQL,使用source命令導(dǎo)入lab.sql腳本,檢查導(dǎo)入是否成功。數(shù)據(jù)庫操作規(guī)范數(shù)據(jù)庫操作需謹(jǐn)慎,避免誤操作導(dǎo)致數(shù)據(jù)丟失或錯(cuò)誤,建議在操作前備份數(shù)據(jù)。數(shù)據(jù)庫查詢驗(yàn)證使用select*fromusers;查詢users表記錄,驗(yàn)證數(shù)據(jù)是否正確導(dǎo)入,確保后續(xù)功能測試準(zhǔn)確。將腳本文件導(dǎo)入到數(shù)據(jù)庫建立基于Session驗(yàn)證的用戶登錄網(wǎng)站04Part創(chuàng)建用戶登錄頁面創(chuàng)建login.html文件,定義登錄表單,使用Post方式提交用戶名和密碼,為用戶登錄提供界面。登錄驗(yàn)證后端頁面創(chuàng)建check_login.php文件,接收Post提交的用戶名和密碼,查詢數(shù)據(jù)庫驗(yàn)證用戶信息,創(chuàng)建Session實(shí)現(xiàn)登錄功能。歡迎頁面創(chuàng)建welcome.php文件,驗(yàn)證Session有效性,顯示歡迎信息和退出登錄鏈接,實(shí)現(xiàn)用戶登錄后的頁面跳轉(zhuǎn)。銷毀session頁面創(chuàng)建logout.php文件,銷毀用戶Session,實(shí)現(xiàn)用戶退出登錄功能,確保用戶信息安全。任務(wù)實(shí)現(xiàn)01確保Apache和MySQL服務(wù)正常運(yùn)行,檢查端口是否打開,關(guān)閉防火墻,為功能測試提供穩(wěn)定環(huán)境。測試環(huán)境準(zhǔn)備02輸入正確用戶名和密碼,驗(yàn)證登錄流程是否正常,檢查Session是否正確創(chuàng)建和使用。登錄流程測試03點(diǎn)擊退出登錄鏈接,驗(yàn)證Session是否被正確銷毀,確保用戶退出后無法繼續(xù)訪問受保護(hù)頁面。退出登錄測試功能測試萬能密碼SQL注入攻擊測試05Part用戶名注入在用戶名輸入'or1=1or',密碼隨意輸入,驗(yàn)證是否能繞過登錄驗(yàn)證進(jìn)入系統(tǒng),測試萬能密碼攻擊效果。密碼注入在用戶名隨意輸入,密碼輸入'or'1=1,驗(yàn)證是否能繞過登錄驗(yàn)證,分析與用戶名注入的異同。測試過程0203015.2.1將'or''=''or'代入SQL語句,分析查詢條件邏輯,驗(yàn)證是否能查詢到所有用戶記錄,實(shí)現(xiàn)攻擊。5.2.2使用'or1=1--',分析注釋對(duì)SQL語句的影響,驗(yàn)證是否能繞過登錄驗(yàn)證。5.2.3使用'or1=1#,分析井號(hào)注釋的效果,驗(yàn)證是否能實(shí)現(xiàn)與其它形式相同的攻擊效果。其它形式的萬能密碼SQL語句結(jié)構(gòu)變化分析用戶輸入的特殊字符串如何改變SQL語句結(jié)構(gòu),使查詢條件恒成立,導(dǎo)致萬能密碼攻擊成功。攻擊原理總結(jié)總結(jié)萬能密碼攻擊的根源在于SQL語句拼接方式,用戶輸入的特殊字符破壞了原有SQL語句的邏輯和結(jié)構(gòu)。0102測試分析萬能密碼SQL注入攻擊防護(hù)06Part正則表達(dá)式規(guī)則使用正則表達(dá)式限制用戶名為5到16位的字母、數(shù)字或下劃線組合,防止用戶輸入特殊字符引發(fā)SQL注入。防護(hù)效果驗(yàn)證測試使用正則表達(dá)式后,萬能密碼是否失效,驗(yàn)證正則表達(dá)式在SQL注入防護(hù)中的有效性。使用正則表達(dá)式限制用戶輸入01使用addslashes()函數(shù)對(duì)用戶輸入進(jìn)行轉(zhuǎn)義,防止特殊字符破壞SQL語句結(jié)構(gòu),驗(yàn)證其防護(hù)效果。02使用mysql_real_escape_string()函數(shù)進(jìn)行轉(zhuǎn)義,分析其與addslashes()的區(qū)別和優(yōu)勢(shì),測試防護(hù)效果。03分析轉(zhuǎn)義函數(shù)在寬字節(jié)字符集環(huán)境下的風(fēng)險(xiǎn),討論如何避免轉(zhuǎn)義函數(shù)被繞過。轉(zhuǎn)義函數(shù)風(fēng)險(xiǎn)使用PHP的轉(zhuǎn)義函數(shù)參數(shù)化查詢?cè)斫榻BMySQLi參數(shù)化查詢的原理,參數(shù)在SQL語句編譯后綁定,防止SQL注入攻擊。實(shí)現(xiàn)方法使用MySQLi擴(kuò)展實(shí)現(xiàn)參數(shù)化查詢,編寫check_login_mysqli.php文件,驗(yàn)證參數(shù)化查詢的防護(hù)效果。MySQLi參數(shù)化查詢討論P(yáng)DO擴(kuò)展的優(yōu)勢(shì),如支持多種數(shù)據(jù)庫、提供面向?qū)ο蠛瓦^程式編程接口,適合不同開發(fā)需求。PDO擴(kuò)展優(yōu)勢(shì)01使用PDO擴(kuò)展實(shí)現(xiàn)參數(shù)化查詢,編寫check_login_pdo.php文件,測試其在SQL注入防護(hù)中的效果。實(shí)現(xiàn)方法02PDO參數(shù)化查詢項(xiàng)目總結(jié)07Part本項(xiàng)目通過實(shí)訓(xùn),成功重現(xiàn)了萬能密碼登錄漏洞,測試了多種SQL注入攻擊方式,并實(shí)現(xiàn)了多種防護(hù)方案。項(xiàng)目成果比較正則表達(dá)式、轉(zhuǎn)義函數(shù)、MySQLi和PDO參數(shù)化查詢等防護(hù)方法的優(yōu)缺點(diǎn),分析在不同場景下的適用性。防護(hù)方法比較本項(xiàng)目為Web安全開發(fā)提供了實(shí)踐指導(dǎo),幫助學(xué)員深入理解SQL注入攻擊原理和防護(hù)方法,提升Web應(yīng)用安全性。項(xiàng)目意義謝謝大家主講人PPT時(shí)間20XX.XX數(shù)據(jù)庫暴庫—Get型注入攻擊主講人PPT時(shí)間20XX.XX目錄CONTENT01020304050607項(xiàng)目描述知識(shí)儲(chǔ)備創(chuàng)建數(shù)據(jù)庫建立Get方式查詢的網(wǎng)站數(shù)據(jù)庫暴庫攻擊測試Get型攻擊防護(hù)項(xiàng)目總結(jié)項(xiàng)目描述01Part通過本項(xiàng)目實(shí)訓(xùn),學(xué)員能夠解釋和分析Get型SQL注入漏洞對(duì)數(shù)據(jù)庫進(jìn)行暴庫攻擊的原理及危害,并應(yīng)用參數(shù)化查詢功能實(shí)現(xiàn)Get型SQL注入攻擊的防護(hù)。01項(xiàng)目目標(biāo)任務(wù)一:建立數(shù)據(jù)庫用于信息查詢。任務(wù)二:開發(fā)基于Get型查詢功能的網(wǎng)站。任務(wù)三:利用Get型SQL注入實(shí)現(xiàn)數(shù)據(jù)庫暴庫。任務(wù)四:分析Get型SQL注入攻擊原理,提出并實(shí)現(xiàn)防護(hù)方法。項(xiàng)目任務(wù)01本項(xiàng)目幫助學(xué)員深入理解Get型SQL注入攻擊的原理和危害,掌握有效的防護(hù)方法,提升Web應(yīng)用的安全性。項(xiàng)目意義知識(shí)儲(chǔ)備02PartGet方式特點(diǎn)Get方式將表單數(shù)據(jù)以“變量=值”的形式附加到URL后,各變量間用“&”連接,只支持ASCII字符,非ASCII字符需URL編碼。特殊字符編碼特殊字符如空格(%20)、雙引號(hào)(%22)、井號(hào)(%23)、單引號(hào)(%27)等需編碼,避免引起歧義。URL編碼規(guī)則空格可替換為加號(hào)(+),正斜杠(/)分隔目錄,問號(hào)(?)分隔URL和查詢,百分號(hào)(%)用于特殊字符編碼。HTMLGet方式參數(shù)提交原理數(shù)據(jù)庫暴庫是通過SQL注入等漏洞獲取數(shù)據(jù)庫內(nèi)容的攻擊方式,Get型SQL注入常用于數(shù)據(jù)庫查詢操作,可實(shí)現(xiàn)暴庫。01暴庫定義UNION操作符用于合并多個(gè)SELECT語句的結(jié)果集,若存在SQL注入漏洞,可構(gòu)造UNION查詢語句實(shí)現(xiàn)暴庫。02UNION操作符數(shù)據(jù)庫暴庫的原理提交方式Get型通過URL提交數(shù)據(jù),Post型通過表單提交。發(fā)生場景Get型常發(fā)生在超鏈接傳遞參數(shù)時(shí),Post型發(fā)生在頁面表單提交信息時(shí)。Get型和Post型SQL注入攻擊的區(qū)別創(chuàng)建數(shù)據(jù)庫03Part腳本內(nèi)容創(chuàng)建lab.sql腳本,定義數(shù)據(jù)庫lab和表books,插入兩條記錄,為后續(xù)查詢功能提供數(shù)據(jù)支持。0102腳本檢查數(shù)據(jù)庫是否存在,若不存在則創(chuàng)建;若存在表則刪除重建,確保表結(jié)構(gòu)和數(shù)據(jù)符合需求。腳本分析創(chuàng)建SQL腳本導(dǎo)入方法以管理員身份登錄MySQL,使用source命令導(dǎo)入lab.sql腳本,檢查導(dǎo)入是否成功。數(shù)據(jù)庫查詢驗(yàn)證使用uselab;select*frombooks;查詢books表記錄,驗(yàn)證數(shù)據(jù)是否正確導(dǎo)入,確保后續(xù)功能測試準(zhǔn)確。將腳本文件導(dǎo)入到數(shù)據(jù)庫sourceC:/Apache24/htdocs/get/lab.sql建立Get方式查詢的網(wǎng)站04Part創(chuàng)建index.php文件,使用Get方式接收參數(shù)id,查詢books表并顯示結(jié)果,實(shí)現(xiàn)基于Get的查詢功能。創(chuàng)建查詢頁面使用PHP/HTML混寫,通過include()函數(shù)引用數(shù)據(jù)庫連接文件,構(gòu)造SQL查詢語句并執(zhí)行,輸出查詢結(jié)果。代碼分析任務(wù)實(shí)現(xiàn)輸入不同id值,驗(yàn)證查詢功能是否正常,檢查是否能正確顯示對(duì)應(yīng)記錄或報(bào)錯(cuò)。查詢功能測試功能測試數(shù)據(jù)庫暴庫攻擊測試05Part攻擊方法在瀏覽器地址欄構(gòu)造SQL注入語句,利用UNION操作符查詢information_schema.schemata表,獲取所有數(shù)據(jù)庫名稱。攻擊結(jié)果查詢結(jié)果顯示在網(wǎng)頁的Book
name字段中,暴露出MySQL中所有數(shù)據(jù)庫名稱。暴數(shù)據(jù)庫http://localhost/get/index.php?id=-1%27union%20select%201,group_concat(schema_name),3%20from%20information_schema.schemata--+攻擊方法構(gòu)造SQL注入語句,查詢information_schema.tables表,獲取lab數(shù)據(jù)庫的所有數(shù)據(jù)表名稱。攻擊結(jié)果查詢結(jié)果顯示在網(wǎng)頁的Bookname字段中,暴露出lab數(shù)據(jù)庫的所有數(shù)據(jù)表名稱。暴lab數(shù)據(jù)庫的數(shù)據(jù)表http://localhost/get/index.php?id=-1%27union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=%27lab%27--+攻擊方法構(gòu)造SQL注入語句,查詢information_schema.columns表,獲取users表的所有列名稱。攻擊結(jié)果查詢結(jié)果顯示在網(wǎng)頁的Bookname字段中,暴露出users表的所有列名稱。暴users表的所有列http://localhost/get/index.php?id=-1%27union%20select%201,group_concat(column_name),3%20from%20information_schema.columns%20where%20table_name=%27users%27--+構(gòu)造SQL注入語句,直接查詢users表的數(shù)據(jù),獲取用戶名和密碼等信息。查詢結(jié)果顯示在網(wǎng)頁的Book
name字段中,暴露出users表的第一條記錄的用戶名和密碼。攻擊方法攻擊結(jié)果暴users表的數(shù)據(jù)http://localhost/get/index.php?id=-1%27union%20select%201,username,passcode%20from%20users%20where%20id=1--+攻擊原理總結(jié)Get型SQL注入攻擊通過構(gòu)造惡意SQL語句,利用UNION操作符合并查詢結(jié)果,繞過正常查詢邏輯,獲取數(shù)據(jù)庫敏感信息。攻擊危害一旦網(wǎng)站存在Get型SQL注入漏洞,攻擊者可逐步獲取數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù),嚴(yán)重威脅網(wǎng)站和用戶信息安全。測試分析Get型攻擊防護(hù)06Part使用mysqli_escape_string()函數(shù)對(duì)用戶輸入進(jìn)行轉(zhuǎn)義,防止特殊字符破壞SQL語句結(jié)構(gòu),但需注意寬字符繞過風(fēng)險(xiǎn)。轉(zhuǎn)義函數(shù)應(yīng)用測試使用轉(zhuǎn)義函數(shù)后,Get型SQL注入攻擊是否失效,驗(yàn)證其在SQL注入防護(hù)中的有效性。防護(hù)效果驗(yàn)證使用PHP轉(zhuǎn)義函數(shù)使用MySQLi擴(kuò)展實(shí)現(xiàn)參數(shù)化查詢,編寫index_mysqli.php文件,將用戶輸入作為參數(shù)綁定到SQL語句中,防止SQL注入攻擊。參數(shù)化查詢實(shí)現(xiàn)測試使用參數(shù)化查詢后,Get型SQL注入攻擊是否失效,驗(yàn)證其在SQL注入防護(hù)中的有效性。防護(hù)效果驗(yàn)證MySQLi參數(shù)化查詢$stmt->bind_param("i",$id);$stmt->execute();$result=$stmt->get_result();$row=$result->fetch_row();項(xiàng)目總結(jié)07Part本項(xiàng)目成功重現(xiàn)了Get型SQL注入漏洞,測試了多種攻擊方式,并實(shí)現(xiàn)了有效的防護(hù)方案。項(xiàng)目成果01比較轉(zhuǎn)義函數(shù)和參數(shù)化查詢的防護(hù)方法,分析其優(yōu)缺點(diǎn)和適用場景,推薦使用參數(shù)化查詢作為主要防護(hù)手段。”防護(hù)方法比較本項(xiàng)目為Web安全開發(fā)提供了實(shí)踐指導(dǎo),幫助學(xué)員深入理解SQL注入攻擊原理和防護(hù)方法,提升Web應(yīng)用的安全性。01項(xiàng)目意義謝謝大家主講人PPT時(shí)間20XX.XX更新密碼—二階注入攻擊主講人PPT時(shí)間20XX.XX01020304目錄CONTENT項(xiàng)目描述知識(shí)儲(chǔ)備建立密碼更新功能的網(wǎng)站二階注入攻擊測試05二階注入攻擊防護(hù)06項(xiàng)目總結(jié)項(xiàng)目描述01Part通過本項(xiàng)目實(shí)訓(xùn),學(xué)員能夠解釋和分析二階SQL注入漏洞產(chǎn)生的原理及危害,能夠應(yīng)用轉(zhuǎn)義處理或者參數(shù)化更新實(shí)現(xiàn)二階SQL注入攻擊的防護(hù)。01項(xiàng)目目標(biāo)任務(wù)一:建立一個(gè)實(shí)現(xiàn)密碼更新功能的網(wǎng)站。任務(wù)二:利用更新密碼功能的二階SQL注入攻擊實(shí)現(xiàn)對(duì)數(shù)據(jù)庫中其他用戶賬號(hào)密碼的修改。任務(wù)三:分析二階SQL注入攻擊的原理并使用轉(zhuǎn)義函數(shù)和參數(shù)化更新實(shí)現(xiàn)二階注入防護(hù)。010203項(xiàng)目任務(wù)01本項(xiàng)目幫助學(xué)員深入理解二階SQL注入攻擊的原理和危害,掌握有效的防護(hù)方法,提升Web應(yīng)用的安全性。項(xiàng)目意義知識(shí)儲(chǔ)備02Part0102一階SQL注入一階SQL注入發(fā)生在一個(gè)HTTP請(qǐng)求和響應(yīng)中,攻擊是立即執(zhí)行的,容易引起注意,通過添加轉(zhuǎn)義函數(shù)或者參數(shù)化查詢就可以封堵。二階SQL注入二階SQL注入首先將攻擊字符串輸入保存在數(shù)據(jù)庫中,然后攻擊者提交第二次HTTP請(qǐng)求。為處理第二次的HTTP請(qǐng)求,應(yīng)用程序需要檢索存儲(chǔ)在數(shù)據(jù)庫中保存的輸入并構(gòu)造SQL語句。由于程序沒有對(duì)存儲(chǔ)在數(shù)據(jù)庫中的內(nèi)容進(jìn)行防注入處理,于是發(fā)生了SQL注入攻擊。二階SQL注入原理用戶注冊(cè)的特殊賬號(hào),會(huì)在更新密碼的過程中引起二階注入攻擊。其原因在于更新密碼的過程需要執(zhí)行數(shù)據(jù)庫記錄的更新操作,即更新該賬號(hào)對(duì)應(yīng)的密碼字段。更新密碼功能如果數(shù)據(jù)庫更新沒有進(jìn)行轉(zhuǎn)義或者使用參數(shù)化,則用戶名中的截?cái)喾?hào)等則可以破壞正常的SQL更新語句執(zhí)行,從而引起二階注入攻擊。注入漏洞更新密碼與二階注入攻擊二階SQL注入也是SQL注入攻擊的一種,只是注入需要在二次數(shù)據(jù)庫查詢、更新等條件下發(fā)生。只要存在注入攻擊漏洞,危害性都很大。二階SQL注入攻擊的危害建立密碼更新功能的網(wǎng)站03Part在Apache的網(wǎng)站根目錄C:\Apache24\htdocs\下新建一個(gè)文件夾register作為本項(xiàng)目的網(wǎng)站目錄。創(chuàng)建register.html文件,包含一個(gè)form表單,點(diǎn)擊Submit按鈕后,參數(shù)"username"和"passwd"以Post方式提交到check_register.php進(jìn)行處理。在check_register.php中,使用mysqli_escape_string()函數(shù)對(duì)預(yù)定義符號(hào)轉(zhuǎn)義,查詢用戶注冊(cè)的用戶名是否已經(jīng)存在,如果存在則輸出提示,否則插入用戶名和密碼到users表。創(chuàng)建項(xiàng)目目錄創(chuàng)建用戶注冊(cè)頁面實(shí)現(xiàn)注冊(cè)功能在check_login.php中,同樣使用mysqli_escape_string()函數(shù)對(duì)用戶名和密碼進(jìn)行轉(zhuǎn)義。如果用戶輸入的用戶名和密碼查詢成功,則啟動(dòng)會(huì)話,在會(huì)話中保存用戶名。創(chuàng)建updatepasswd.html文件,表單中包含參數(shù)"current_passwd"為用戶當(dāng)前密碼,"passwd"為新密碼。更新密碼的功能由updatepasswd.php實(shí)現(xiàn)。在updatepasswd.php中,從$_SESSION['username']中獲取用戶名,使用mysqli_real_escape_string()函數(shù)對(duì)輸入的賬號(hào)和密碼進(jìn)行轉(zhuǎn)義,然后更新passcode字段。登錄驗(yàn)證頁面更新密碼頁面更新密碼功能頁面任務(wù)實(shí)現(xiàn)打開注冊(cè)頁面,輸入已存在的用戶名和密碼,點(diǎn)擊Submit按鈕,提示用戶已經(jīng)存在。驗(yàn)證禁止重復(fù)賬號(hào)注冊(cè)功能輸入新的用戶名和密碼,點(diǎn)擊Submit按鈕,提示注冊(cè)成功。登錄后點(diǎn)擊“修改密碼”超鏈接,輸入當(dāng)前密碼和新密碼,點(diǎn)擊Submit按鈕,提示密碼更改成功。驗(yàn)證正常注冊(cè)與修改密碼功能功能測試二階注入攻擊測試04Part在注冊(cè)頁面輸入用戶名為admin'#,密碼為123456,點(diǎn)擊Submit按鈕,提示注冊(cè)成功。注冊(cè)特殊賬號(hào)01使用注冊(cè)的特殊賬號(hào)登錄,點(diǎn)擊“修改密碼”超鏈接,輸入當(dāng)前密碼和新密碼,點(diǎn)擊Submit按鈕,提示密碼修改成功。重新檢索users表,發(fā)現(xiàn)用戶admin的密碼被修改。登錄并修改密碼02測試過程在瀏覽器打開的頁面register.html中的Username和Password分別輸入admin'#和123456,那么在注冊(cè)文件check_register.php中的第6行變量$username的值為admin\'#,因此第14行的查詢語句為:select*fromuserswhereusername='admin\'#';由于第二個(gè)單引號(hào)被轉(zhuǎn)義,故第1個(gè)和第3個(gè)單引號(hào)為一對(duì),變量關(guān)系沒有被破壞,井號(hào)位于一對(duì)單引號(hào)的變量中,不會(huì)注釋掉后面的SQL語句內(nèi)容。注冊(cè)功能分析在updatepasswd.php文件中,第12行中變量$username的值為admin'#,第15行更新密碼的SQL語句為:$sql="UPDATEusersSETpasscode='$pass'WHEREusername='$username'andpasscode='$curr_pass'";將$username=admin'#,$pass=admin,$curr_pass=123456代入到該語句后,$sql變量的內(nèi)容變成了:UPDATEusersSETpasscode='admin'WHEREusername='admin'#andpasscode='123456'由于#不在一對(duì)單引號(hào)中,所以成為SQL語句的注釋,故實(shí)際執(zhí)行的SQL語句變成了:UPDATEusersSETpasscode='admin'WHEREusername='admin'因此實(shí)現(xiàn)了將admin賬號(hào)的密碼進(jìn)行更新。更新密碼功能分析測試分析二階注入攻擊防護(hù)05Part修改在updatepasswd.php中,對(duì)從$_SESSION['username']中獲取的用戶名使用mysqli_real_escape_string()函數(shù)進(jìn)行轉(zhuǎn)義處理。防護(hù)效果驗(yàn)證使用特殊賬號(hào)登錄并修改密碼,發(fā)現(xiàn)只有該特殊賬號(hào)的密碼被修改,其他賬號(hào)的密碼保持不變。使用PHP轉(zhuǎn)義函數(shù)使用MySQLi擴(kuò)展實(shí)現(xiàn)參數(shù)化更新功能,將用戶輸入作為參數(shù)綁定到SQL語句中,防止SQL注入攻擊。防護(hù)效果驗(yàn)證使用特殊賬號(hào)登錄并修改密碼,發(fā)現(xiàn)只有該特殊賬號(hào)的密碼被修改,其他賬號(hào)的密碼保持不變。創(chuàng)建參數(shù)化更新文件MySQLi參數(shù)化更新項(xiàng)目總結(jié)06Part本項(xiàng)目成功重現(xiàn)了二階SQL注入漏洞,測試了攻擊過程,并實(shí)現(xiàn)了有效的防護(hù)方案。項(xiàng)目成果比較轉(zhuǎn)義函數(shù)和參數(shù)化更新的防護(hù)方法,分析其優(yōu)缺點(diǎn)和適用場景,推薦使用參數(shù)化更新作為主要防護(hù)手段。01防護(hù)方法比較謝謝大家主講人PPT時(shí)間20XX.XXCookie注入攻擊主講人PPT時(shí)間20XX.XX項(xiàng)目介紹01建立Cookie驗(yàn)證功能的網(wǎng)站02Cookie注入攻擊測試03Cookie注入攻擊防護(hù)04CONTENT目錄項(xiàng)目總結(jié)05項(xiàng)目介紹01Part0102本項(xiàng)目對(duì)利用Cookie提交數(shù)據(jù)的SQL注入攻擊和防護(hù)進(jìn)行實(shí)訓(xùn)。包含三個(gè)任務(wù),建立具有Cookie驗(yàn)證功能的網(wǎng)站,實(shí)現(xiàn)基于Cookie數(shù)據(jù)的SQL注入,以及實(shí)現(xiàn)Cookie注入防護(hù)。通過本項(xiàng)目實(shí)訓(xùn),可以解釋和分析Cookie注入漏洞產(chǎn)生的原理及危害,能夠應(yīng)用轉(zhuǎn)義函數(shù)或者參數(shù)化查詢實(shí)現(xiàn)對(duì)CookieSQL注入的防護(hù)。項(xiàng)目描述Cookie的概念Cookie最先由Netscape公司提出并引入到Navigator瀏覽器,之后被萬維網(wǎng)協(xié)會(huì)采納?,F(xiàn)在,絕大多數(shù)瀏覽器都支持Cookie。Cookie是一種能夠讓W(xué)eb服務(wù)器把少量數(shù)據(jù)儲(chǔ)存到客戶端的硬盤或內(nèi)存里,或是從客戶端的硬盤里讀取數(shù)據(jù)的一種技術(shù),其最根本的用途是幫助Web站點(diǎn)保存有關(guān)訪問者的信息。Cookie的格式為:(1)每個(gè)Cookie都以鍵/值對(duì)的形式,即key=value,(2)鍵和值都必須是URL編碼的,(3)兩對(duì)Cookie間以分號(hào)和空格隔開。Cookie的處理過程為:(1)服務(wù)器向客戶端發(fā)送Cookie,(2)瀏覽器將Cookie保存,(3)之后的每次HTTP請(qǐng)求瀏覽器都會(huì)將Cookie發(fā)送給服務(wù)器端。Cookie在生成時(shí)會(huì)被指定一個(gè)Expires值,如果不指定則關(guān)閉瀏覽器后消失。此Expires值就是Cookie的生命周期,超出周期Cookie就會(huì)被清除。另外,用戶在刷新頁面或者打開網(wǎng)站的其它頁面時(shí)應(yīng)該重新更新Cookie的到期時(shí)間,以避免出現(xiàn)在使用網(wǎng)站的過程中因Cookie到期而突然讓用戶重新登錄的情況。Cookie和Session的區(qū)別Session也是用于保存用戶信息。Session與Cookie的區(qū)別是Cookie將用戶信息保存在客戶端瀏覽器中,而Session保存在服務(wù)器上。每個(gè)Session對(duì)應(yīng)一個(gè)SessionID,由服務(wù)器自動(dòng)分配,寫入到用戶瀏覽器的Cookie中。因此,SessionID要使用Cookie保存,如果客戶端禁用了Cookie,就要使用其它的方法在瀏覽器端保存SessionID。知識(shí)儲(chǔ)備Cookie注入攻擊原理Cookie注入攻擊就是利用Cookie向服務(wù)器端提交信息而發(fā)起的注入攻擊。Cookie注入與傳統(tǒng)的SQL注入并無不同,兩者都是針對(duì)數(shù)據(jù)庫的注入,只是表現(xiàn)形式上不同。Cookie注入攻擊利用了Cookie的處理過程的第三個(gè)階段,即將Cookie發(fā)送給服務(wù)器端時(shí),通過修改Cookie的內(nèi)容引起SQL注入攻擊。CookieSQL注入攻擊的危害由于Cookie功能用于讀取客戶端的信息,是Web站點(diǎn)的常用功能,因此Cookie
SQL注入攻擊較容易發(fā)生。Cookie注入與Post型、Get型SQL注入攻擊的區(qū)別是方式不同,但危害性是一致的。由于Cookie注入攻擊不涉及到用戶以Post或者Get方式提交的數(shù)據(jù),因此更加具有隱蔽性。知識(shí)儲(chǔ)備建立Cookie驗(yàn)證功能的網(wǎng)站02Part在Apache的網(wǎng)站根目錄C:\Apache24\htdocs\下新建一個(gè)文件夾cookie作為本項(xiàng)目的網(wǎng)站目錄。并項(xiàng)目3的con_database.php文件復(fù)制到本項(xiàng)目的網(wǎng)站目錄。本項(xiàng)目使用項(xiàng)目3的數(shù)據(jù)庫。另外,由于【任務(wù)5-2】節(jié)將admin用戶的密碼修改成了admin,重復(fù)5-1-2節(jié)修改密碼的步驟將其重新修改為admin123。接下來,在C:\Apache24\htdocs\cookie\目錄下新建一個(gè)index.php文件。代碼簡要分析:本頁面實(shí)現(xiàn)的功能是,如果在瀏覽器當(dāng)前域名下的Cookie中沒有account的值,表明沒有登錄或者Cookie已經(jīng)過期,便輸出一個(gè)登錄的表單。否則根據(jù)account的值到數(shù)據(jù)庫中查詢是否存在該用戶,如果存在該用戶則顯示用戶信息并重新設(shè)置Cookie的到期日期,否則輸出“Error”信息。第11行自定義的JavaScriot函數(shù)clearCookies()實(shí)現(xiàn)了刪除瀏覽器端保存的Cookie的功能。刪除Cookie使用的方法是將Cookie設(shè)置為過期。第17行實(shí)現(xiàn)頁面刷新。01020304任務(wù)實(shí)現(xiàn)第27行判斷瀏覽器是否存在名為account的Cookie的值,如果不存在,輸出登錄的表單供用戶提交登錄賬號(hào)和密碼。否則(第62行)顯示用戶相關(guān)信息和Cookie到期時(shí)間。用戶每次刷新或者重新打開該頁面,則更新Cookie到期日期(第76行)。注意:如果網(wǎng)站有多個(gè)網(wǎng)頁,需要在每個(gè)網(wǎng)頁都要設(shè)置Cookie到期日期的更新,以避免用戶使用的時(shí)間過長而退出登錄。第49行使用setcookie()函數(shù)設(shè)置Cookie信息的鍵值對(duì),并設(shè)置該Cookie信息的超時(shí)時(shí)間為1個(gè)小時(shí)。如果不設(shè)置超時(shí)時(shí)間,關(guān)閉瀏覽器后Cookie的信息即丟失。如果用戶長時(shí)間沒有操作頁面,當(dāng)時(shí)間到達(dá)Cookie到期日期后則Cookie信息消失。第64行,根據(jù)從瀏覽器獲得的account的Cookie值構(gòu)造SQL查詢語句,并輸出該用戶的密碼(第83行)。另外,需要注意第72行、第83行輸出變量的XSS跨站攻擊漏洞風(fēng)險(xiǎn)。05060708任務(wù)實(shí)現(xiàn)打開瀏覽器,在地址欄輸入服務(wù)器的地址和相對(duì)路徑以及文件名,即可訪問。如果是本地訪問,可以輸入http://localhost/cookie/index.php打開頁面。在Username和Password分別輸入admin和admin123,點(diǎn)擊Submit,登錄成功之后的界面。刷新頁面后發(fā)現(xiàn)Cookie的到期日期發(fā)生變化。關(guān)閉并重新打開IE瀏覽器,訪問http://localhost/cookie/index.php頁面,頁面內(nèi)容與登錄成功界面相同,不需要輸入登錄信息,但是Cookie的到期日期發(fā)生變化。說明Cookie信息在瀏覽器關(guān)閉后仍然存在。點(diǎn)擊“清除Cookie”按鈕,發(fā)現(xiàn)頁面刷新后回到登錄界面。Cookie驗(yàn)證功能測試Cookie注入攻擊測試03Part對(duì)Cookie信息進(jìn)行編輯并提交需要利用抓包軟件抓取HTTP協(xié)議的數(shù)據(jù)。抓包軟件的工作原理是在瀏覽器與服務(wù)器之間作為中間人進(jìn)行代理轉(zhuǎn)發(fā)。常用的抓包工具有BurpSuite、Wireshark、Fiddler等。查看操作系統(tǒng)的實(shí)際IP地址的方法為:右鍵點(diǎn)擊Windows開始菜單,選擇運(yùn)行命令提示符,在命令提示符窗口中輸入命令ipconfig,則可以看到操作系統(tǒng)的實(shí)際IP。攻擊準(zhǔn)備設(shè)置Firefox使用代理的方法為:打開瀏覽器應(yīng)用程序菜單,選擇運(yùn)行“設(shè)置”菜單項(xiàng),在設(shè)置頁面中的“常規(guī)”標(biāo)簽頁滑動(dòng)到最后的“網(wǎng)絡(luò)設(shè)置”功能區(qū)域,點(diǎn)擊“設(shè)置”按鈕即可打開連接設(shè)置窗口,然后在“配置訪問互聯(lián)網(wǎng)的代理服務(wù)器”功能區(qū)域選擇“手動(dòng)配置代理”選項(xiàng)。由于測試的網(wǎng)站都沒有配置HTTPs協(xié)議,因此只需要在“HTTP代理”編輯框輸入“”,端口編輯框輸入“8888”即可。輸入完成后點(diǎn)擊確定按鈕即可完成設(shè)置。攻擊準(zhǔn)備Firefox瀏覽器的優(yōu)勢(shì)在于可以靈活的設(shè)置網(wǎng)絡(luò)連接代理。但當(dāng)前最新版本的Firefox瀏覽器的代理策略發(fā)生了變化,強(qiáng)制與localhost、和::1的連接永不經(jīng)過代理。因此,如果在運(yùn)行Web服務(wù)器的WindowsServer2016Standard操作系統(tǒng)作為測試機(jī)進(jìn)行攻擊測試,且網(wǎng)址中的主機(jī)地址使用以上IP時(shí),F(xiàn)iddler代理將不起作用。因此,可以使用Web服務(wù)器的實(shí)際IP地址進(jìn)行Web資源訪問。本教材選擇使用Fiddler4.6作為抓包代理軟件。Fiddler是以Web服務(wù)器代理的形式在測試機(jī)工作的,當(dāng)Fiddler開啟后會(huì)自動(dòng)啟動(dòng)自身代理功能,退出后會(huì)自動(dòng)注銷代理。它使用的代理IP地址為測試機(jī)的回環(huán)地址,端口為8888。因此,在測試機(jī)的瀏覽器需要設(shè)置好Fiddler使用的代理IP和端口信息,即可在Fiddler實(shí)施抓包和文件上傳漏洞攻擊等。攻擊準(zhǔn)備BurpSuite是一款由PortSwigger公司開發(fā)的集成式Web應(yīng)用安全測試平臺(tái),有免費(fèi)版和商業(yè)版,廣泛用于網(wǎng)絡(luò)滲透測試、應(yīng)用程序安全測試等場景,功能強(qiáng)大,但有一定的學(xué)習(xí)成本和使用門檻。Wireshark是開源軟件,可用于抓包,但不是針對(duì)Web應(yīng)用抓包開發(fā)。TelerikFiddler是一款功能強(qiáng)大的HTTP協(xié)議調(diào)試代理工具,通過捕獲、查看、修改和重放網(wǎng)絡(luò)請(qǐng)求和響應(yīng),能夠幫助用戶進(jìn)行接口調(diào)試、性能分析、安全測試和網(wǎng)絡(luò)故障排查等工作,使用門檻比BurpSuite要低很多,當(dāng)前其classic版本為免費(fèi)版。啟動(dòng)Fiddler,其界面。窗口頂部為菜單欄和快捷工具欄,左邊為會(huì)話列表,右邊的窗口有很多選項(xiàng)卡,鼠標(biāo)左鍵點(diǎn)選左邊的一條會(huì)話,在右上窗口的“Inspectors”選項(xiàng)卡中就可以查看此會(huì)話的內(nèi)容,其中上半部分是瀏覽器請(qǐng)求的內(nèi)容,下半部分是服務(wù)器響應(yīng)的內(nèi)容。在左邊的會(huì)話列表窗口中每一條記錄都是一條HTTP會(huì)話,鼠標(biāo)左鍵點(diǎn)選后可以通過鍵盤的Delete鍵刪除。點(diǎn)擊快捷工具欄的紅叉菜單,選擇“Removeall”菜單項(xiàng)可以清除窗口中所有的會(huì)話。攻擊準(zhǔn)備另外,F(xiàn)iddler啟動(dòng)后可能會(huì)打開操作系統(tǒng)的全局代理。如需關(guān)閉作系統(tǒng)的全局代理,可以在操作系統(tǒng)的“開始”菜單->“設(shè)置”->“網(wǎng)絡(luò)和Internet”->“代理”的功能頁面中將“使用代理服務(wù)器”切換為“關(guān)”狀態(tài)。如果此時(shí)Fiddler界面出黃色提示信息“系統(tǒng)代理已改變”,點(diǎn)擊此黃色提示即可繼續(xù)抓包。由于Cookie注入攻擊需要修改HTTP的頭部數(shù)據(jù),因此需要斷點(diǎn)功能攔截瀏覽器發(fā)送的HTTP包,修改Cookie信息后再放行,以實(shí)現(xiàn)攻擊的目標(biāo)。打開斷點(diǎn)功能的方法很簡單,只需要在“Rules”菜單打開二級(jí)菜單“AutomaticBreakpoints”,然后點(diǎn)擊第一個(gè)菜單項(xiàng)“Before
Requests”即可。如果需要關(guān)閉斷點(diǎn)功能,再點(diǎn)擊第三個(gè)菜單項(xiàng)切換到“Disabled”即可。由于使用了最新版的Firefox不支持代理localhost訪問,需要在Firefox瀏覽器地址欄輸入本地真實(shí)IP并打開網(wǎng)頁,因此地址欄需要輸入<urlid="cv97nm7hvltiannd2mu0"type="url"status="failed"title=""wc="0">43/cookie/index.php</url>(注意根據(jù)自己使用的測試用機(jī)的實(shí)際IP修改URL中的IP地址)。這時(shí)需要在Fiddler的快捷工具欄中點(diǎn)擊Go按鈕放行才能打開頁面。然后在Username和Password分別輸入admin和admin123,點(diǎn)擊Submit提交登錄。這時(shí)需要在Fiddler的快捷工具欄中點(diǎn)擊Go按鈕放行,才能登錄成功。注意打開斷點(diǎn)功能后,每次訪問頁面都需要點(diǎn)擊Go按鈕放行。0102Cookie注入攻擊過程登錄成功之后,為避免干擾,先清除所有的會(huì)話,然后點(diǎn)擊瀏覽器的“刷新當(dāng)前頁面”,此時(shí)HTTP請(qǐng)求將發(fā)送Cookie信息到服務(wù)器被攔截。03Cookie注入攻擊過程在Inspectors選項(xiàng)卡的Raw窗口(在此窗口可查看完整的消息結(jié)構(gòu)),可以看到當(dāng)前頁面的Cookie內(nèi)容。將Cookie行account的值admin修改為:abc'unionselect1,2,group_concat(schema_name)frominformation_schema.schemata#。在會(huì)話窗口點(diǎn)擊選中當(dāng)前會(huì)話,然后點(diǎn)擊Go按鈕,回到瀏覽器發(fā)現(xiàn)用戶名的值變成了2,YourPassword的值變成了MySQL數(shù)據(jù)庫的內(nèi)容。0504如果還要進(jìn)行其它的注入攻擊,先點(diǎn)擊“清除Cookie”按鈕清除當(dāng)前的Cookie,再登錄后編輯Cookie的內(nèi)容。06Cookie注入攻擊過程Cookie注入攻擊防護(hù)04Part通過Cookie注入攻擊分析可以發(fā)現(xiàn),引起注入攻擊的原因在于將Cookie的值作為SQL變量進(jìn)行數(shù)據(jù)庫查詢時(shí),沒有對(duì)其進(jìn)行轉(zhuǎn)義或者使用參數(shù)化查詢。因此,防護(hù)手段就可以對(duì)Cookie的值使用轉(zhuǎn)義或者使用參數(shù)化查詢。防護(hù)手段打開index.php,將64行修改為:$cookee=mysqli_real_escape_string($con,$_COOKIE['account']);從攻擊結(jié)果可以看出,使用轉(zhuǎn)義函數(shù)成功的避免了Cookie注入攻擊。也可以使用參數(shù)化查詢來防護(hù)二次注入攻擊,請(qǐng)參考之前的項(xiàng)目自行實(shí)現(xiàn)。保存后重復(fù)6-2-2節(jié)的攻擊步驟,按照?qǐng)D68所示修改并保存Value的內(nèi)容,然后刷新頁面,結(jié)果如圖6-11所示。010203防護(hù)實(shí)現(xiàn)為避免修改保存Cookie生成多條Cookie對(duì)項(xiàng)目測試結(jié)果造成影響,在CookieManager標(biāo)簽頁刷新以顯示本頁面所有的Cookie信息,鼠標(biāo)點(diǎn)擊選中后再點(diǎn)擊“Removeselected(1)”按鈕以刪除多余的Cookie信息,然后再次刷新CookieManager標(biāo)簽頁以確認(rèn)完成了刪除。01小貼士項(xiàng)目總結(jié)05Part01從Cookie注入攻擊測試可以發(fā)現(xiàn),即使沒有以Get方式或Post方式提供用戶輸入數(shù)據(jù),從客戶端的瀏覽器讀取Cookie信息也會(huì)引起SQL注入攻擊。這說明,一切來自客戶端的信息都可能引起SQL注入攻擊。從防護(hù)測試結(jié)果可知,使用PHP轉(zhuǎn)義函數(shù)或者參數(shù)化查詢,可以防護(hù)Cookie信息查詢引起的SQL注入攻擊。02謝謝大家主講人PPT時(shí)間20XX.XXHTTP頭部注入攻擊主講人PPT時(shí)間20XX.XX
目錄Contents知識(shí)儲(chǔ)備02項(xiàng)目描述01創(chuàng)建數(shù)據(jù)庫03建立HTTP頭部信息保存功能的網(wǎng)站04HTTP頭部注入攻擊防護(hù)06HTTP頭部注入攻擊測試05項(xiàng)目總結(jié)07項(xiàng)目描述01Part01本項(xiàng)目對(duì)利用HTTP頭部信息保存功能的數(shù)據(jù)庫SQL注入攻擊和防護(hù)進(jìn)行實(shí)訓(xùn)。包含四個(gè)任務(wù),創(chuàng)建數(shù)據(jù)庫用于保存HTTP頭部信息,建立具有HTTP頭部信息保存功能的網(wǎng)站,利用服務(wù)器端保存HTTP頭部User-Agent信息的功能實(shí)現(xiàn)插入型SQL注入,實(shí)現(xiàn)HTTP頭部SQL注入攻擊防護(hù)。本項(xiàng)目需使用瀏覽器插件修改瀏覽器端的HTTP頭部信息。通過本項(xiàng)目實(shí)訓(xùn),可以解釋和分析HTTP頭部SQL注入漏洞產(chǎn)生的原理及危害,應(yīng)用轉(zhuǎn)義函數(shù)和參數(shù)化插入實(shí)現(xiàn)HTTP頭部SQL注入攻擊防護(hù)。02項(xiàng)目描述知識(shí)儲(chǔ)備02Part客戶端發(fā)送一個(gè)到服務(wù)器的HTTP請(qǐng)求消息包括請(qǐng)求行、請(qǐng)求頭部和請(qǐng)求體三個(gè)部分組成。請(qǐng)求行包括請(qǐng)求方法(Post或者Get)、請(qǐng)求的URL和HTTP的版本;請(qǐng)求頭包含若干個(gè)屬性,格式為“Key:Value”,服務(wù)端據(jù)此獲取客戶端的信息;請(qǐng)求體將一個(gè)頁面表單中的組件值通過鍵值對(duì)的形式編碼成一個(gè)格式化串,承載多個(gè)請(qǐng)求參數(shù)的數(shù)據(jù)。HTTP頭部注入攻擊利用了HTTP請(qǐng)求頭部向服務(wù)端提供信息的功能。請(qǐng)求頭部的信息包括User-Agent、Referer、Accept、Cache-Control等屬性。比如,User-Agent表示客戶端是用什么瀏覽器(包括版本號(hào))、什么操作系統(tǒng)(包括版本號(hào)),Referer表示這個(gè)請(qǐng)求是從哪個(gè)URL過來的,Accept屬性告訴服務(wù)端客戶端接受什么類型的響應(yīng),Cache-Control表示如何對(duì)緩存進(jìn)行控制。HTTP頭部組成HTTP請(qǐng)求頭部的信息發(fā)送給服務(wù)器后,服務(wù)器可以將HTTP請(qǐng)求頭部的某些用戶信息保存到數(shù)據(jù)庫中以便統(tǒng)計(jì)用戶的訪問情況。因此,和其它SQL注入方式一樣,通過修改發(fā)送給服務(wù)器的HTTP請(qǐng)求頭信息,可以實(shí)現(xiàn)SQL注入攻擊。與查詢式注入攻擊不同,信息保存時(shí)發(fā)生的注入攻擊稱為插入式注入攻擊。HTTP頭部注入攻擊原理使用瀏覽器提供的HTTP頭部信息對(duì)用戶的訪問情況進(jìn)行統(tǒng)計(jì),是很多網(wǎng)站采用的統(tǒng)計(jì)方式,因此HTTP頭部信息保存引起的插入式SQL注入攻擊也是一種重要的安全威脅。同Cookie注入類似,由于HTTP頭部注入攻擊不涉及到用戶以Post或者Get方式提交的數(shù)據(jù),隱蔽性也更強(qiáng)。HTTP頭部信息SQL注入攻擊的危害創(chuàng)建數(shù)據(jù)庫03Part在Apache的網(wǎng)站根目錄C:\Apache24\htdocs\下新建一個(gè)文件夾header作為本項(xiàng)目的網(wǎng)站目錄。新建文件,輸入以下腳本內(nèi)容,保存到在C:\Apache24\htdocs\header\目錄下,保存類型為*.sql,文件名為lab.sql。腳本內(nèi)容如下:SQL腳本首先以管理員身份運(yùn)行命令提示符,并登錄到數(shù)據(jù)庫,登錄方法參見圖1-7。SQL腳本導(dǎo)入方法為,在mysql>提示符下輸入:sourceC:/Apache24/htdocs/header/lab.sql。如果沒有報(bào)錯(cuò)就表示導(dǎo)入成功。(注意:路徑最好用/代替Windows的\)查看uagents表的結(jié)構(gòu)可以在MySQL客戶端運(yùn)行以下命令:use
lab;desc
uagents;。將腳本文件導(dǎo)入到數(shù)據(jù)庫建立HTTP頭部信息保存功能的網(wǎng)站04Part01首先將項(xiàng)目3的con_database.php文件復(fù)制到本項(xiàng)目的網(wǎng)站目錄。接下來新建一個(gè)index.php文件,置于C:\Apache24\htdocs\header\目錄下。02代碼簡要分析:該php頁面僅是為了演示插入型的HTTP頭部注入攻擊,實(shí)現(xiàn)了登錄檢查和客戶端信息的插入功能。如果成功登錄(第34行),則向uagents表插入用戶名、客戶端的User-Agent信息和IP地址(第46、47行)。注意第37、41和43行的XSS跨站攻擊漏洞風(fēng)險(xiǎn)。任務(wù)實(shí)現(xiàn)01在服務(wù)器本地打開Firefox瀏覽器,在地址欄輸入http://localhost/header/index.php打開頁面。HTTP頭部信息保存功能測試02按下F12打開Firefox瀏覽器的調(diào)試模式,在Username和Password分別輸入admin和admin123,點(diǎn)擊Submit,登錄成功之后的界面如圖7-3所示。HTTP頭部信息保存功能測試03接下來查看Firefox瀏覽器調(diào)試模式下得到的index.php的請(qǐng)求頭信息。依次點(diǎn)擊“網(wǎng)絡(luò)”、“HTML”、“index.php”、“消息頭”,請(qǐng)求頭的信息如圖7-4所示。HTTP頭部信息保存功能測試HTTP頭部注入攻擊測試05PartHTTP頭部信息捕獲在Firefox瀏覽器打開header網(wǎng)站的主頁面<urlid="cv99f6jdjm8un8egnq9g"type="url"status="failed"title=""wc="0">43/header/index.php</url>(注意:新版的Firefox瀏覽器訪問localhost不支持通過設(shè)置的代理,所以需要輸入測試所在的Web服務(wù)器的實(shí)際IP才能被Fiddler抓包)。在Username和Password分別輸入admin和admin123,點(diǎn)擊Submit提交登錄。登錄成功后
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 外貿(mào)公司國際貿(mào)易經(jīng)理面試參考題
- 高新企業(yè)注冊(cè)環(huán)保類技術(shù)人員選拔及面試題分析
- 健康類企業(yè)招聘面試題及答案參考
- 辦公室主任面試題及答案
- 2026屆云南省昆明市云南民族大學(xué)附屬高級(jí)中學(xué)高三上學(xué)期第四次月考?xì)v史試題(含答案)
- 2025年大數(shù)據(jù)分析中心運(yùn)營可行性研究報(bào)告
- 2025年城市供水管網(wǎng)升級(jí)改造項(xiàng)目可行性研究報(bào)告
- 2025年農(nóng)產(chǎn)品電商直播模式可行性研究報(bào)告
- 2025年醫(yī)療健康監(jiān)護(hù)機(jī)器人項(xiàng)目可行性研究報(bào)告
- 2025年直播電商生態(tài)系統(tǒng)構(gòu)建項(xiàng)目可行性研究報(bào)告
- 基于VAR的證券投資組合優(yōu)化模型畢業(yè)論文
- 人教版小升初考試數(shù)學(xué)試卷(含解析)重慶市渝北區(qū)魯能巴蜀小學(xué)2025年
- 2025年天津紅日藥業(yè)股份有限公司招聘考試筆試參考題庫附答案解析
- 卓有成效的管理者要事優(yōu)先
- 生產(chǎn)車間安全管理檢查表及整改措施
- 電廠標(biāo)識(shí)系統(tǒng)KKS編碼說明pdf
- 2023年郴州職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫及答案詳解1套
- 2025年福建省綜合評(píng)標(biāo)專家?guī)炜荚囶}庫(二)
- 完整版醫(yī)療器械基礎(chǔ)知識(shí)培訓(xùn)考試試題及答案
- 220kV電網(wǎng)輸電線路的繼電保護(hù)設(shè)計(jì)
- 《無人機(jī)地面站與任務(wù)規(guī)劃》 課件全套 第1-9章 概論 -無人機(jī)內(nèi)業(yè)數(shù)據(jù)整與處理
評(píng)論
0/150
提交評(píng)論