首頁 後端開發 php教程 關於PHP安全程式設計的一些建議

關於PHP安全程式設計的一些建議

Aug 20, 2019 am 10:27 AM
程式設計安全

簡介

要提供網路服務,在開發程式碼的時候必須隨時保持安全意識。可能大部分 PHP 腳本都對安全問題不在意,這很大程度是因為有大量的無經驗程式設計師在使用這門語言。但是,沒有理由讓你因為對你的程式碼的不確定性而導致不一致的安全性策略。當你在伺服器上放任何涉及到錢的東西時,就有可能會有人嘗試破解它。創建一個論壇程式或任何形式的購物車,被攻擊的可能性就上升到了無窮大。

推薦PHP影片教學:https://www.php.cn/course/list/29/type/2.html

背景

為了確保你的web 內容安全,這裡有一些常規的安全準則:

1、別相信表單

##攻擊表單很簡單。透過使用一個簡單的 JavaScript 技巧,你可以限制你的表單只允許在評分域中填寫 1 到 5 的數字。如果有人關閉了他們瀏覽器的 JavaScript 功能或提交自訂的表單數據,你客戶端的驗證就失敗了。

使用者主要透過表單參數和你的腳本交互,因此他們是最大的安全風險。你該學到什麼呢?在 PHP 腳本中,總是要驗證 傳遞給任何 PHP 腳本的資料。在本文中,我們向你們示範如何分析和防範跨站腳本(XSS)攻擊,它可能會劫持使用者憑證(甚至更嚴重)。你也會看到如何防止會玷污或破壞你資料的 MySQL 注入攻擊。

2、別相信使用者

假定你網站取得的每一份資料都充滿了有害的程式碼。清理每一部分,即便你相信沒有人會嘗試攻擊你的網站。

3、關閉全域變數

你可能會有的最大安全漏洞是啟用了

register_globals 設定參數。幸運的是,PHP 4.2 及以後版本預設關閉了這個配置。如果打開了 register_globals,你可以在你的php.ini 檔案中透過改變register_globals 變數為Off 關閉該功能:

register_globals = Off
登入後複製

新手程式設計師覺得註冊全域變數很方便,但他們不會意識到這個設定有多危險。一個啟用了全域變數的伺服器會自動為全域變數賦任何形式的參數。為了了解它如何運作以及為什麼有危險,讓我們來看一個例子。

假設你有一個稱為

process.php 的腳本,它會在你的資料庫中插入表單資料。初始的表單像下面這樣:

<input name="username" type="text" size="15" maxlength="64">
登入後複製

運行

process.php 的時候,啟用了註冊全域變數的 PHP 會將該參數賦值到 $username 變數。這會比透過$_POST['username'] 或 $_GET['username'] 存取它來節省擊鍵次數。不幸的是,這也會給你留下安全性問題,因為PHP 會設定該變數的值為透過GET 或POST 的參數發送到腳本的任何值,如果你沒有顯示地初始化該變數並且你不希望任何人去操作它,這會有一個大問題。

看下面的腳本,假如

$authorized 變數的值為 true,它會給使用者顯示通過驗證的資料。正常情況下,只有當使用者正確通過了這個假想的 authenticated_user() 函數驗證,$authorized 變數的值才會被設定為真。但如果你啟用了 register_globals,任何人都可以傳送一個 GET 參數,例如 authorized=1 去覆寫它:

<?php
// Define $authorized = true only if user is authenticated
if (authenticated_user()) {
    $authorized = true;
}
?>
登入後複製

这个故事的寓意是,你应该从预定义的服务器变量中获取表单数据。所有通过 post 表单传递到你 web 页面的数据都会自动保存到一个称为 $_POST 的大数组中,所有的 GET 数据都保存在 $_GET 大数组中。文件上传信息保存在一个称为 $_FILES 的特殊数据中。另外,还有一个称为 $_REQUEST 的复合变量。

要从一个 POST 方法表单中访问username字段,可以使用 $_POST[&#39;username&#39;]。如果 username 在 URL 中就使用$_GET[&#39;username&#39;]。如果你不确定值来自哪里,用 $_REQUEST[&#39;username&#39;]

<?php
$post_value = $_POST[&#39;post_value&#39;];
$get_value = $_GET[&#39;get_value&#39;];
$some_variable = $_REQUEST[&#39;some_value&#39;]; 
?>
登入後複製

$_REQUEST $_GET$_POST、和 $_COOKIE 数组的结合。如果你有两个或多个值有相同的参数名称,注意 PHP 会使用哪个。默认的顺序是 cookiePOST、然后是 GET

以上就是为大家整理的一些编程安全建议。更过相关问题请访问PHP中文网:https://www.php.cn/

以上是關於PHP安全程式設計的一些建議的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

Intel TXT是什麼? Intel TXT是什麼? Jun 11, 2023 pm 06:57 PM

IntelTXT是Intel公司推出的硬體輔助安全技術,它可以透過在CPU和BIOS間建立一個受保護的空間,來確保伺服器在啟動時的完整性和安全性。 TXT的全名為TrustedExecutionTechnology,也就是可信執行技術。簡單來說,TXT是一種安全技術,它可以提供硬體層級的保護,確保伺服器在啟動時沒有被惡意程式或未經授權的軟體修改。這

如何使用PHP預防HTTP回應拆分攻擊 如何使用PHP預防HTTP回應拆分攻擊 Jun 24, 2023 am 10:40 AM

HTTP回應分割攻擊(HTTPresponsesplittingattack)是一種利用網路應用程式處理HTTP回應的漏洞,攻擊者透過建構惡意HTTP回應將惡意程式碼注入到合法回應中,來實現攻擊使用者的目的。 PHP作為常用的Web開發語言,也面臨HTTP回應拆分攻擊的威脅。本文將介紹如何使用PHP來預防HTTP回應拆分攻擊。了解HTTP響應拆分攻擊

比亞迪與Stingray合作打造令人安全愉悅的車載娛樂空間 比亞迪與Stingray合作打造令人安全愉悅的車載娛樂空間 Aug 11, 2023 pm 02:09 PM

比亞迪官方微信公眾號發布消息稱,比亞迪與音樂媒體科技公司Stingray達成合作協議,計劃從2023年起在新能源汽車上引入Stingray互動車載KTV產品,並在全球多個市場推廣據報道,比亞迪與Stingray合作開發的娛樂系統將為比亞迪的新能源汽車增加更多娛樂功能,以滿足用戶多樣化的需求。該娛樂系統將支援多種語言,提供用戶友好的介面設計,使用戶能夠輕鬆地按照歌曲的標題、藝術家、歌詞或流派進行搜尋。此外,該系統每月將自動更新曲目,為用戶帶來全新的音樂體驗為了確保駕駛安全,當車輛處於駕駛模式時,

Nginx反向代理程式中的安全DNS解析 Nginx反向代理程式中的安全DNS解析 Jun 11, 2023 am 09:51 AM

隨著網路應用的不斷發展,我們需要越來越多的安全措施來保護我們的資料和隱私。其中,安全DNS解析是一項非常重要的措施,它可以保護我們不被惡意DNS伺服器攻擊。在Nginx反向代理中使用安全DNS解析也同樣重要。本文將討論Nginx反向代理程式中的安全DNS解析,並介紹如何設定。什麼是DNS解析? DNS(DomainNameSystem)解析是將網域名稱轉換為IP

如何防範網路鍵盤記錄器? 如何防範網路鍵盤記錄器? Jun 11, 2023 pm 03:03 PM

在網路時代,資訊外洩已經成為了我們生活中非常普遍的現象。其中,網路鍵盤記錄器是一種非常有效率的駭客攻擊工具,透過記錄使用者輸入的內容,竊取使用者帳號密碼等敏感訊息,對個人隱私和財產造成威脅。因此,如何有效地防範網路鍵盤記錄器,成為了我們網路使用者所面臨的重要挑戰。本文將為大家介紹幾種避免成為網路鍵盤記錄器受害者的方法。定期更新作業系統和軟體網路鍵盤記錄器多

Nginx安全性更新的一些建議 Nginx安全性更新的一些建議 Jun 10, 2023 am 11:03 AM

Nginx是一個廣泛使用的Web伺服器和反向代理伺服器,它具有可擴展的模組化結構和高效的效能優勢。然而,就像其他軟體一樣,Nginx也有可能存在安全漏洞。為了保護網站的安全性,Nginx的安全性更新非常重要。本文將介紹一些針對Nginx的安全性更新建議。定期更新Nginx對於任何軟體,更新是至關重要的。特別是對於Nginx這樣的Web伺服器和反向代理伺服器,如果

AMD Secure Processor是什麼? AMD Secure Processor是什麼? Jun 11, 2023 pm 12:15 PM

AMDSecureProcessor是指一種用於加強電腦系統安全性的協處理器。該技術由全球知名的半導體製造商AMD開發,旨在提供更強的系統安全保護措施。 AMDSecureProcessor的實作方式是將一個安全處理器整合於主處理器中,該處理器被設計用於執行安全相關的計算任務,並且擁有自己獨立的記憶體和記憶器,與主處理器相互隔離。這一協處理器的引入

微信支付安全性探究 微信支付安全性探究 Jun 11, 2023 am 08:57 AM

隨著電子支付的流行,人們越來越依賴手機支付寶或微信支付等行動支付平台。這些平台為消費者和商家提供了一種方便且快速的支付方式,但同時,平台安全關乎使用者的資產和個人資訊安全。在這篇文章中,我們將探討微信支付的安全性,以評估其在保護使用者的個人資訊和帳戶安全等方面的表現。首先,我們需要了解微信支付中的安全機制。微信支付遵循PCI-DSS(PaymentCard

See all articles