首頁 > 後端開發 > php教程 > 整理的一些PHP開發安全問題

整理的一些PHP開發安全問題

不言
發布: 2023-03-23 08:24:02
原創
2617 人瀏覽過

整理一些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教學

以上是整理的一些PHP開發安全問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板