Php 安全錯誤 Top 7
Jun 21, 2016 am 09:11 AM安全|錯誤
PHP對于飛速發(fā)展的動態(tài)網(wǎng)站來說是一門恐怖的語言。它對于新手來說也有很多友好的性質(zhì),比如變量不需要定義就可以直接使用。但是,一些類似的這種性質(zhì)使程序員不會注意到在網(wǎng)站應(yīng)用方面的一些安全問題。一個非常著名的郵件列表就充滿很多條了對PHP應(yīng)用有漏洞的例子,但一旦你理解了PHP應(yīng)用中這些基本的漏洞,PHP將變得比其他任何語言都安全。
在這篇文章中,我會詳細的說說明在一般PHP程序中常見的導(dǎo)致安全問題的錯誤。而且會展示給你什么是不能做的,還有這些特殊的漏洞是怎么被發(fā)現(xiàn)的,我希望你不但可以懂得怎么來避免這些特殊的錯誤,而且可以知道它們?yōu)槭裁磿?dǎo)致安全問題。了解每種可能出現(xiàn)的漏洞能幫助你避免在編寫PHP程序時發(fā)生同樣的錯誤。安全是一個過程,而不是一個產(chǎn)品,通過在開發(fā)應(yīng)用程序的過程中了解安全問題可以讓你編出更高效更健壯的代碼。
Unvalidated Input Errors 不受重視的輸入錯誤
最常見的PHP安全問題之一就是對用戶輸入過濾的漏洞。一般用戶提交數(shù)據(jù)都是不可信任的。你應(yīng)該假設(shè)所有所有訪問你網(wǎng)站的用戶都是惡意的。非正常輸入是很多PHP應(yīng)用程序漏洞的最根本的原因,我們將在后面進行討論。
現(xiàn)在給大家一個例子,你可以寫下面這段代碼來允許用戶看到可以一個通過執(zhí)行UNIX中的cal命令來顯示特殊月份。
$month = $_GET[month];
$year = $_GET[year];
exec("cal $month $year", $result);
print "
"; <br>foreach ($result as $r) { print "$r<br>"; } <br>print "";
這段代碼有很多安全問題。比如$_GET[month]和$_GET[year]沒有過濾就直接賦給了$month和$year,如果用戶輸入的月份是1到12之間,而且年份是4位數(shù)字當(dāng)然是沒有問題。不過,惡意的用戶會在年份后面加上一個";ls -la",這樣他就可以以列表的方式看到你網(wǎng)站的所有目錄。更加極端的用戶會在年份后面加上";rm -rf",這樣就能刪掉你的整個網(wǎng)站!
改正這個安全問題的最好的方法是在接收用戶輸入的數(shù)據(jù)時進行檢測,使他成為你所希望的格式。不要使用JS來驗證,這種驗證很容易就能繞過,比如建立一個自己的表單來提交數(shù)據(jù),或者用瀏覽器禁用JS。你應(yīng)該用PHP代碼來確保輸入的年份和月份是數(shù)字,而且必須是數(shù)字。就象下面的代碼這樣:
$month = $_GET[month];
$year = $_GET[year];
if (!preg_match("/^[0-9]$/", $month)) die("Bad month, please re-enter.");
if (!preg_match("/^[0-9]$/", $year)) die("Bad year, please re-enter.");
exec("cal $month $year", $result);
print "
"; <br>foreach ($result as $r) { print "$r<br>"; } <br>print "";
這樣的代碼就能安全的使用,而不用考慮用戶提交的數(shù)據(jù)會使你的應(yīng)用程序產(chǎn)生錯誤,或?qū)е路?wù)器運行用戶提交的非法代碼。正則表達式是驗證數(shù)據(jù)的一個非常有效的工具。雖然他很難完全掌握,但在這種情況下還是非常實用的。
你應(yīng)該驗證用戶提交的數(shù)據(jù),來拒絕所有非法的數(shù)據(jù)。一定不要在沒有驗證之前接收任何數(shù)據(jù),除非你可以確定它一定是安全的數(shù)據(jù)。這是一個常見的安全問題。但有時,惡意的用戶會通過一些方法來提交一些特定的數(shù)據(jù),這樣可以繞過你的驗證,而且會起到有害的作用。
所以你應(yīng)該嚴(yán)格的驗證提交的數(shù)據(jù),如果一些字符是不需要的,那么你應(yīng)該過濾掉這些字符或者直接拒絕接收這些的數(shù)據(jù)。
Access Control Flaws 非法控制漏洞
這是一個對PHP應(yīng)用程序來說非必要的驗證,但卻是十分重要的,就是非法控制。比如有一個管理頁,在這個頁中可以修改網(wǎng)站的配置,或會顯示一些敏感的信息。
你應(yīng)該在執(zhí)行每一個PHP應(yīng)用頁面時對用戶的權(quán)限進行檢查。如果你只在首頁檢查了用戶的權(quán)限,那么惡意的用戶可以直接在地址欄輸入地址來進入后面的那些沒有進行權(quán)限判斷的頁面。
建議進行嚴(yán)格的檢查。如果可能的話,你可以根據(jù)用戶的IP來判斷他們的權(quán)限。另一個好的方法是把把你不想讓別人訪問到的頁面放到一個特殊的目錄,并用apache中的.htaccess來保護這個目錄。
把網(wǎng)站的配置文件放在網(wǎng)站可以直接訪問的目錄之外。這種配置文件包括數(shù)據(jù)庫的密碼和其他一些會讓惡意用戶利用來攻擊你的網(wǎng)站的信息。用PHP的include函數(shù)來包含這些文件。雖然做這些事感覺有點多余,但對于網(wǎng)站的安全還是有積極的作用的。
例如我寫的PHP應(yīng)用程序。所有的自定義的函數(shù)庫都放在一個includes的文件夾中。一般把這些被包含的文件取一個以.php為后綴的文件名,這樣就算你所做的保護措施都被繞過了,服務(wù)器也會把這些文件當(dāng)做PHP文件來解析,而不會顯示這些文件的內(nèi)容。www和admin文件夾是唯一的可以通過URL直接訪問的文件夾。admin文件夾受到.htaccess的保護,只允許知道儲存在.htpasswd中的用戶名和密碼的用戶可以訪問。
/home
/httpd
/www.example.com
.htpasswd
/includes
cart.class.php
config.php
/logs
access_log
error_log
/www
index.php
/admin
.htaccess
index.php
你應(yīng)該設(shè)置你的apache的默認主頁名是index.php并且確保每個目錄都有index.php這個文件。當(dāng)別人訪問這些你不想讓別人訪問的目錄時讓他轉(zhuǎn)向到網(wǎng)站的主頁,比如存放圖片的目錄或其他類似的。
千萬不要把你的備份文件取文件名為.bak的后綴,并放在可以直接通過URL訪問的目錄。如果你這樣做了,那么在這些文件中的PHP代碼將不會被解析,甚至可能會被用戶通過URL直接下載。如果這些文件包含密碼或其他敏感的信息,那么有可能會被別人知道,甚至可能被搜索引擎,比如GOOGLE,直接搜索到而顯示在頁面上。一定要把這些文件重新命名為 .bak.php 為后綴的文件,這樣會安全一些,不過最好的解決方法還是用象CVS那樣控制。CVS學(xué)起來有一些復(fù)雜,不過你學(xué)習(xí)的所花的時間會在以后得到回報。這樣的系統(tǒng)可以讓你把每個不同版本的程序保存在不同的文件夾,如果你的程序以后出了問題,這些以前保存的版本可能會成為你無價的資源。.
[1]?[2]?[3]?下一頁??

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Input suara pengguna ditangkap dan dihantar ke backend PHP melalui API Mediarecorder JavaScript front-end; 2. PHP menjimatkan audio sebagai fail sementara dan memanggil STTAPI (seperti Pengiktirafan Suara Google atau Baidu) untuk mengubahnya menjadi teks; 3. PHP menghantar teks kepada perkhidmatan AI (seperti Openaigpt) untuk mendapatkan jawapan pintar; 4. PHP kemudian memanggil TTSAPI (seperti sintesis Baidu atau Google Voice) untuk menukar balasan ke fail suara; 5. PHP mengalir fail suara kembali ke bahagian depan untuk bermain, menyelesaikan interaksi. Seluruh proses dikuasai oleh PHP untuk memastikan hubungan lancar antara semua pautan.

Kaedah teras untuk membina fungsi perkongsian sosial dalam PHP adalah untuk menghasilkan pautan perkongsian secara dinamik yang memenuhi keperluan setiap platform. 1. Mula -mula dapatkan halaman semasa atau URL dan maklumat artikel yang ditentukan; 2. Gunakan urlencode untuk menyandikan parameter; 3. Sambutan dan menjana pautan perkongsian mengikut protokol setiap platform; 4. Pautan paparan di hujung depan untuk pengguna mengklik dan berkongsi; 5. Dinamik menghasilkan tag OG pada halaman untuk mengoptimumkan paparan kandungan perkongsian; 6. Pastikan untuk melepaskan input pengguna untuk mencegah serangan XSS. Kaedah ini tidak memerlukan pengesahan yang kompleks, mempunyai kos penyelenggaraan yang rendah, dan sesuai untuk kebanyakan keperluan perkongsian kandungan.

Untuk merealisasikan pembetulan ralat teks dan pengoptimuman sintaks dengan AI, anda perlu mengikuti langkah -langkah berikut: 1. Pilih model AI atau API yang sesuai, seperti Baidu, Tencent API atau perpustakaan NLP sumber terbuka; 2. Panggil API melalui curl atau Guzzle PHP dan memproses hasil pulangan; 3. Maklumat pembetulan ralat paparan dalam aplikasi dan membenarkan pengguna memilih sama ada untuk mengadopsinya; 4. Gunakan php-l dan php_codesniffer untuk pengesanan sintaks dan pengoptimuman kod; 5. Secara berterusan mengumpul maklum balas dan mengemas kini model atau peraturan untuk meningkatkan kesannya. Apabila memilih AIAPI, fokus pada menilai ketepatan, kelajuan tindak balas, harga dan sokongan untuk PHP. Pengoptimuman kod harus mengikuti spesifikasi PSR, gunakan cache yang munasabah, elakkan pertanyaan bulat, mengkaji semula kod secara berkala, dan gunakan x

1. Memaksimumkan nilai komersil sistem komen memerlukan menggabungkan pengiklanan pengiklanan asli, perkhidmatan nilai tambah pengguna (seperti memuat naik gambar, komen top-up), mempengaruhi mekanisme insentif berdasarkan kualiti komen, dan pematuhan data pengewangan data tanpa nama; 2. Strategi audit harus mengadopsi gabungan penapisan kata kunci dinamik pra-audit dan mekanisme pelaporan pengguna, ditambah dengan penarafan kualiti komen untuk mencapai pendedahan hierarki kandungan; 3. Anti-brushing memerlukan pembinaan pertahanan berbilang lapisan: Recaptchav3 Pengesahan tanpa sensor, Honeypot Honeypot Field Robot, IP dan Had Frekuensi Timestamp menghalang penyiraman, dan pengiktirafan corak kandungan menandakan komen yang mencurigakan, dan terus berurusan dengan serangan.

PHP tidak secara langsung melaksanakan pemprosesan imej AI, tetapi mengintegrasikan melalui API, kerana ia adalah baik pada pembangunan web dan bukannya tugas-tugas intensif pengkomputeran. Integrasi API boleh mencapai pembahagian profesional buruh, mengurangkan kos, dan meningkatkan kecekapan; 2. Mengintegrasikan teknologi utama termasuk menggunakan Guzzle atau Curl untuk menghantar permintaan HTTP, pengekodan data JSON dan penyahkodan, pengesahan keselamatan utama API, pemprosesan giliran yang memakan masa yang memakan masa, pengendalian ralat yang teguh dan mekanisme semula, penyimpanan imej dan paparan; 3. Cabaran umum termasuk kos API daripada kawalan, hasil generasi yang tidak terkawal, pengalaman pengguna yang lemah, risiko keselamatan dan pengurusan data yang sukar. Strategi tindak balas menetapkan kuota dan cache pengguna, menyediakan panduan propt dan pemilihan multi-gambar, pemberitahuan asynchronous dan kemajuan kemajuan, penyimpanan pembolehubah persekitaran utama dan audit kandungan, dan penyimpanan awan.

PHP memastikan pemotongan inventori atomik melalui urus niaga pangkalan data dan kunci baris forupdate untuk mengelakkan overselling serentak yang tinggi; 2. Konsistensi inventori pelbagai platform bergantung kepada pengurusan berpusat dan penyegerakan yang didorong oleh peristiwa, menggabungkan pemberitahuan API/webhook dan beratur mesej untuk memastikan penghantaran data yang boleh dipercayai; 3. Mekanisme penggera harus menetapkan inventori rendah, sifar/inventori negatif, jualan yang tidak dapat dilepaskan, kitaran penambahan dan strategi turun naik yang tidak normal dalam senario yang berbeza, dan pilih DingTalk, SMS atau orang yang bertanggungjawab e -mel mengikut urgensi, dan maklumat penggera mesti lengkap dan jelas untuk mencapai penyesuaian perniagaan dan tindak balas yang cepat.

Phpisstillrelevantinmodernenterpriseenvironments.1.modernphp (7.xand8.x) Menawarkan Perpaduan Perlengkapan, ketegangan, jitcompilation, danmodernsyntax, makeitsuatableforlarge-scaleapplications.2.phpintegratefective

Pilih Perkhidmatan Pengiktirafan Suara AI yang sesuai dan mengintegrasikan PHPSDK; 2. Gunakan PHP untuk memanggil FFMPEG untuk menukar rakaman ke dalam format API yang diperlukan (seperti WAV); 3. Muat naik fail ke penyimpanan awan dan hubungi pengiktirafan tak segerak API; 4. Menganalisis hasil JSON dan menyusun teks menggunakan teknologi NLP; 5. Menjana dokumen Word atau Markdown untuk melengkapkan automasi rekod mesyuarat. Seluruh proses perlu memastikan penyulitan data, kawalan akses dan pematuhan untuk memastikan privasi dan keselamatan.
