整理一些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中文網其他相關文章!

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增強codemodocultion,可驗證性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

選擇DependencyInjection(DI)用於大型應用,ServiceLocator適合小型項目或原型。 1)DI通過構造函數注入依賴,提高代碼的測試性和模塊化。 2)ServiceLocator通過中心註冊獲取服務,方便但可能導致代碼耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)啟用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替換loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化進行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)

tomakephpapplicationsfaster,關注台詞:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,關注台詞:1)啟用opcodeCachingwithapCutoredUcescriptexecutiontime.2)實現databasequerycachingingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandreduceconnection.4 limitesclection.4.4

依赖注入(DI)通过显式传递依赖关系,显著提升了PHP代码的可测试性。1)DI解耦类与具体实现,使测试和维护更灵活。2)三种类型中,构造函数注入明确表达依赖,保持状态一致。3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

DatabasequeryoptimizationinPHPinvolvesseveralstrategiestoenhanceperformance.1)Selectonlynecessarycolumnstoreducedatatransfer.2)Useindexingtospeedupdataretrieval.3)Implementquerycachingtostoreresultsoffrequentqueries.4)Utilizepreparedstatementsforeffi


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Dreamweaver CS6
視覺化網頁開發工具

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具