整理的一些PHP開發安全問題
整理一些PHP開發安全性問題
php給了開發者極大的靈活性,但這也為安全問題帶來了潛在的隱患,近期需要總結一下以往的問題,在這裡借翻譯一篇文章同時加上自己開發的一些感觸總結一下。
簡介
當開發一個互聯網服務的時候,必須時刻牢記安全觀念,並在開發的程式碼中體現。 PHP腳本語言對安全性問題並不關心,特別是對大多數沒有經驗的開發者來說。每當你講任何涉及到錢財事務等交易問題時,需要特別注意安全問題的考慮,例如開發一個論壇或是一個購物車等。
安全保護一般要點
不相信表單
對於一般的Javascript前台驗證,由於無法得知使用者的行為,例如關閉了瀏覽器的javascript引擎,這樣透過POST惡意資料到伺服器。需要在伺服器端進行驗證,對每個php腳本驗證傳遞到的數據,防止XSS攻擊和SQL注入
#不相信用戶
要假設你的網站接收的每一條資料都是存在惡意程式碼的,存在隱藏的威脅,要對每一條資料都進行清理
關閉全域變數
在php.ini檔案中進行以下設定:
register_globals = Off
如果這個設定選項開啟之後,會出現很大的安全隱患。例如有一個process.php的腳本文件,會將接收到的資料插入資料庫,接收使用者輸入資料的表單可能如下:
<input name="username" type="text" size="15" maxlength="64">
這樣,當提交資料到process.php之後,php會註冊一個$username變量,將這個變數資料提交到process.php,同時對於任何POST或GET請求參數,都會設定這樣的變數。如果不是顯示進行初始化那麼就會出現下面的問題(參考:http://www.lai18.com/content/434606.html)
<?php // Define $authorized = true only if user is authenticated if (authenticated_user()) { $authorized = true; } ?>
此處,假設authenticated_user函數就是判斷$authorized變數的值,如果開啟了register_globals配置,那麼任何使用者都可以發送一個請求,來設定$authorized變數的值為任意值從而就能繞過這個驗證。
所有的這些提交資料都應該透過PHP預先定義內建的全域數組來獲取,包括$_POST、$_GET、$_FILES、$_SERVER、$_REQUEST等,其中$_REQUEST是一個$_GET/$ _POST/$_COOKIE三個數組的聯合變量,預設的順序是$_COOKIE、$_POST、$_GET。
建議的安全配置選項
error_reporting設定為Off:不要暴露錯誤訊息給用戶,開發的時候可以設定為ON
safe_mode設定為Off
register_globals設定為Off
將以下函數停用:system、exec、passthru、shell_exec、proc_open、popen
open_basedir設定為/tmp ,這樣就可以讓儲存空間有儲存權限,同時設置單獨的網站根目錄
expose_php設置為Off
allow_url_fopen設置為Off
allow_url_include設置為Off
SQL注入攻擊
對於操作資料庫的SQL語句,需要特別注意安全性,因為使用者可能輸入特定語句使得原有的SQL語句改變了功能。類似下面的範例:
# 擴充功能閱讀
《PHP安全程式設計系列》系列技術文章整理收藏
PHP安全程式設計系列收藏夾收藏了有關PHP安全程式設計的知識,對PHP安全程式設計提供學習參考
1discuz的php防止sql注入函數
#2php防止xss攻擊的方法
3PHP安全性程式設計:對輸出要進行轉義
4PHP安全程式設計:過濾使用者輸入
5PHP安全程式設計:可用性與資料追蹤
6PHP安全程式設計:不要讓不相關的人看到報錯資訊
# 7PHP安全性程式設計:register_globals的安全性
#8PHP安全性程式設計:網站安全設計的一些原則
9PHP安全程式設計:關於表單欺騙提交
10PHP安全程式設計:HTTP請求欺騙
11PHP安全程式設計:不要暴露資料庫存取權限
12PHP安全編程:跨站請求偽造CSRF的防禦
13PHP安全編程:表單與數據安全性
14PHP安全程式設計:從URL的語意進行攻擊
15PHP安全程式設計:檔案上傳攻擊的防禦
16PHP安全程式設計:跨站腳本攻擊的防禦
17PHP安全程式設計:session固定取得合法會話
18PHP安全性程式設計:防止SQL注入
#19PHP安全性程式設計:cookie曝光導致session被劫持
#20PHP安全程式設計:防止原始碼的揭露
#21PHP安全程式設計:留心後門URL
##22PHP安全程式設計:session劫持的防禦
#23PHP安全程式設計:暴力破解攻擊
#24PHP安全編程:密碼嗅探與重播攻擊
25PHP安全性程式設計:記住登入狀態的安全性做法
26PHP安全性程式設計:shell指令注入
27PHP安全性程式設計:開啟遠端檔案的風險
28PHP安全性程式設計:檔案目錄猜測漏洞
29PHP安全程式設計:阻止檔案名稱被操縱
30PHP安全程式設計:檔案所包含的程式碼注入攻擊
31PHP安全程式設計:更優的會話資料安全性
32PHP安全程式設計:共享主機的原始碼安全性
33PHP安全性程式設計:會話資料注入
34PHP安全性程式設計:主機檔案目錄瀏覽
35PHP安全程式設計:PHP的安全模式
#36php安全性直接用$取得值而不$_GET字元轉義
37php防止漏洞策略,建立高效能web
38什麼XSS攻擊? PHP防止XSS攻擊函數
39解析php防止form重複提交的方法
40php安全之狗尾續貂
41PHP防止跨域提交表單
42php防止SQL注入詳解及防範
43php防止sql注入程式碼實例
44php防止sql注入範例分析和幾個常見攻擊正規表示式
##45PHP安全之防止你的原始碼或重要設定資訊暴露在外
46PHP防止post重複提交資料的簡單範例
47php防止偽造的資料從URL提交方法
48PHP防止表單重複提交的幾個常用方法匯總
49php防止偽造資料從網址列URL提交的方法
#50php防止站外遠端提交表單的方法
#51php防止sql注入之過濾分頁參數實例
52PHP安全性以Apache模式安裝時可能遇到的攻擊及解決方法
#53PHP安全之文件系統安全及防範措施
#54PHP安全性檔案系統安全性-Null字元問題
#55PHP安全之資料庫安全性-SQL注入及預防措施
#56PHP安全性簡介與總則
57PHP安全性之以CGI 模式安裝時可能遇到的攻擊及解決方案
#58PHP安全性使用者提交的資料
#59PHP安全之資料庫安全性-設計、連接與加密
#60PHP安全之魔術引號-什麼是魔術引號以及如何使用
61PHP安全性隱藏PHP腳本副檔名
62PHP安全性使用Register Globals
#63PHP安全性錯誤報告
#64php防止惡意刷新與刷票的方法
#65php防止網站被刷新的方法總結
66PHP網站常見安全漏洞,及相應防範措施總結
以上是整理的一些PHP開發安全問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。

PHP和Python各有優劣,選擇取決於項目需求和個人偏好。 1.PHP適合快速開發和維護大型Web應用。 2.Python在數據科學和機器學習領域佔據主導地位。

PHP適合web開發,特別是在快速開發和處理動態內容方面表現出色,但不擅長數據科學和企業級應用。與Python相比,PHP在web開發中更具優勢,但在數據科學領域不如Python;與Java相比,PHP在企業級應用中表現較差,但在web開發中更靈活;與JavaScript相比,PHP在後端開發中更簡潔,但在前端開發中不如JavaScript。

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。
