首頁 >後端開發 >php教程 >PHP主| PCI合規性及PHP意味著什麼

PHP主| PCI合規性及PHP意味著什麼

Christopher Nolan
Christopher Nolan原創
2025-02-24 09:01:11394瀏覽

PHP Master | PCI Compliance and What it Means to PHP

理解PCI合規性及其對PHP開發的影響

PCI代表“支付卡行業”,但對許多人來說,它是一套由秘密國際卡特爾強加的模糊標準,這些標準旨在用繁重的法規和法律糾紛來埋葬毫無戒心的靈魂。事實的真相要枯燥得多。實際上,PCI是由信用卡公司和行業安全專家組成的聯盟制定的一套安全指南,用於規範應用程序在處理信用卡或借記卡信息時的行為。信用卡公司將這些標準強加於銀行,然後銀行將其強加於我們這些運營電子商務網站的人。在本文中,我們將消除關於PCI的一些持續存在的誤解,從20,000英尺的高度了解PCI的內容,然後重點關注與一般編碼和PHP相關的那些要求。

關鍵要點

  • PCI(支付卡行業)標準是由信用卡公司和安全專家製定的安全指南,用於規範應用程序如何處理信用卡或借記卡信息。它們適用於所有接受信用卡信息進行支付的人,包括小型電子商務網站。
  • PCI標準包含12項基本要求,包括構建和維護安全網絡、保護持卡人數據、維護漏洞管理程序、實施強大的訪問控制機制、定期監控和測試網絡以及維護信息安全策略。
  • PHP開發人員在創建處理信用卡數據的應用程序時必須遵守這些標準。這包括不使用供應商默認配置文件或密碼、保護和加密存儲的持卡人數據、開發安全系統和應用程序、限制訪問以及跟踪和記錄對資源和數據的所有訪問。
  • 雖然PCI標準提供安全方面的指南和想法,但它們並非具體的技術,也不能保證免受黑客攻擊。但是,遵守這些標準可以降低安全漏洞的可能性,並提高公司的法律和消費者地位。
  • 遵守PCI標準並非一次性任務,需要持續關注和年度審查。開發人員應通過PCI安全標準委員會網站以及相關的安全新聞通訊、博客和培訓計劃等資源,隨時了解最新的PCI要求和安全最佳實踐。

PCI誤解

毫不奇怪,圍繞PCI標準存在許多誤解。其中一個誤解是,它們就像黑手黨的行為準則一樣,沒有寫在哪裡,因此可以按照你想要的方式解釋。當然,這是不正確的。要了解PCI標準的完整說明,只需訪問pcisecuritystandards.org即可。另一個誤解是,PCI安全標準僅適用於銀行和大型零售商等“大公司”。它們適用於每一個接受信用卡信息來支付商品的人。如果你為你的母親編寫了一個PHP網站來出售她著名的檸檬派,那麼你就有了一個符合PCI指南的系統。第三個誤解是,如果你遵循PCI標準,那麼你將受到保護免受惡意黑客攻擊,你的數據將保持安全。當然,這很好,但事實是,PCI標準是指南和想法,而不是具體的技術(它們必須含糊不清才能適應所有架構和平台)。顯然,你越關注安全,被攻擊的機率就越小,但任何人都可能受到攻擊。如果你至少嘗試過滿足PCI的期望,那麼在法律和消費者方面,你的評價都會更好。最後,PCI不是你做一次然後深呼吸就能完成的事情。該標準要求你每年進行一次PCI審查,因此這就像質量保證工作或傾聽你配偶的意見一樣,是一項持續進行的工作。簡單的事實是,PCI是每個從事處理信用卡數據的應用程序的程序員都需要了解的事情,無論規模大小。是的,這就是為什麼經銷商只收現金的原因。

PCI基礎知識

PCI標準由12項基本要求組成。該標準大約每兩年更新一次,在此期間會發佈各種更具體的指南文件,這些文件處理PCI世界中的某個子集。例如,在2013年2月,PCI人員發布了一份白皮書,討論了PCI和雲計算。這些特別報告也可從PCI網站獲得。正如我們將看到的,許多PCI要求更多地與網絡相關,但是,如果你沒有對完整的PCI有一個基本的了解,那麼談論這些東西還有什麼意義呢?這些要求是:

  • 區域1 – 建立和維護安全網絡
    • 要求1 – 安裝防火牆以保護您的環境。
    • 要求2 – 不要使用供應商默認配置文件或密碼。
  • 區域2 – 保護持卡人數據
    • 要求3 – 保護存儲的持卡人數據。
    • 要求4 – 對在開放的公共網絡上傳輸的持卡人數據進行加密。
  • 區域3 – 維持漏洞管理程序
    • 要求5 – 使用並定期更新防病毒軟件。
    • 要求6 – 開發和維護安全的系統和應用程序。
  • 區域4 – 實施強大的訪問控制機制
    • 要求7 – 基於需要了解的原則限制對持卡人數據的訪問。
    • 要求8 – 為每個具有計算機訪問權限的人分配一個唯一的ID。
    • 要求9 – 限制對持卡人數據的物理訪問。
  • 區域5 – 定期監控和測試網絡
    • 要求10 – 跟踪和監控/記錄對網絡資源和持卡人數據的所有訪問。
    • 要求11 – 定期測試安全系統和流程。
  • 區域6 – 維持信息安全策略
    • 要求12 – 維持一項解決信息安全的策略。

其中一些項目與政策決策有關,即制定明確說明你如何努力保護卡信息並確保網絡和應用程序整體安全的策略的決策。其他要求與網絡本身以及你可以用來保護它的軟件有關。其中一些涉及流程的設計階段,你如何構建和設置你的應用程序。幾乎沒有任何要求與代碼有關,而且沒有任何要求描述建議你保持安全的特定編程技術。為了保持篇幅相對較短,我將限制我的諷刺和智慧(比例為70:30),並關注最後兩組。

要求2 – 不要使用供應商默認的配置文件/密碼

在許多方面,這幾乎是不言而喻的。自從我們開始擔心這些事情以來,安全人員一直在告訴我們這一點。但令人驚訝的是,在許多我們使用的軟件(例如MySQL)中,使用默認帳戶和密碼是多麼容易(尤其是在你第一次安裝東西並且一切都處於“測試”狀態時)。這裡的危險性之所以增加,是因為我們大多數人都是圍繞一些基本的軟件來構建我們的應用程序,而不是從頭開始做整個事情。它可能只是一個我們用來處理加密和密鑰存儲的包(見下文),也可能是整個應用程序的框架。無論哪種方式,易於記住,易於實現:不要使用默認帳戶。

要求3 – 保護存儲的持卡人數據

在我記得的大多數高調的零售網站黑客攻擊事件中,都涉及到網站保存的卡或其他數據的盜竊,因此我將此列為PCI標準中最重要的部分。顯然,你存儲的任何卡數據都應該被加密。而且你需要做好加密工作。對於那些非常了解加密的人來說,你知道做好數據加密工作意味著你已經很好地管理了加密密鑰。密鑰管理圍繞著生成、存儲和更新加密過程中使用的密鑰的問題展開。存儲它們可能是一個大問題,因為你想確保沒有人能夠進入系統並竊取密鑰。管理策略在如何將密鑰分成多個部分方面有所不同;如果你想了解密鑰管理的介紹,我建議你從Securosis的這份白皮書開始,然後繼續學習,儘管要注意,水會很快變得很深。當然,如果你使用商業產品來處理加密,那麼你可以將密鑰管理留給他們,儘管你想確保他們的流程是可靠的,並且它符合你的方法。大多數商業產品都是考慮到PCI而開發的,因此將根據PCI標準構建,但這仍然不會妨礙你進行二次檢查。此外,如果你最大限度地減少甚至消除你存儲的數據量,那麼保護數據這項任務將變得容易得多。也就是說,持卡人數據可以是他們的姓名、生日、卡號、有效期、卡驗證(CV)碼(卡背或卡正面上的三位或四位數字)等等。你保存的項目越少,你需要加密的就越少,你的責任就越小。幸運的是,這是一個PCI標準相當具體的領域,它明確規定了你可以和不可以保存哪些數據。你可以保存卡號(PAN – 主要帳戶號碼)、持卡人姓名、有效期和服務代碼。如果你確實保存了PAN,那麼如果你要顯示它,則必須對其進行屏蔽,最多只能顯示前六位和後四位數字。你不能存儲PIN、CV碼或磁條的全部內容。在設計階段,你必須問自己的問題是,你真的想保留多少這些令人討厭的數據。保留它的唯一真正原因是你希望在下一次為你的客戶提供輕鬆的體驗。你可以保留生日,這樣你就可以在生日的時候給他們發一個友好的小邀請。所有這些數據都必須被加密和保護,所以確保你從中獲得了一些可靠的商業用途。要求4(對任何正在傳輸的數據進行加密)算是這部分內容的一部分,但我將其視為基礎設施的一部分,不再贅述。

要求6 – 開發和維護安全的系統和應用程序

這是與代碼相關的要求。不是針對特定的函數或類,而是至少確保你遵循一般安全標準並嘗試使你的東西盡可能安全。因此,你只需使用編碼技術(無論使用哪種語言),這些技術不會使你的應用程序容易受到明顯的攻擊。例如,你嘗試通過在接受表單數據時採取預防措施來防止SQL注入,你嘗試阻止XSS等等。有關避免一些更常見安全問題的更多信息,請參閱SitePoint上發布的其他一些文章(這篇文章和這篇文章,以及如果你搜索“安全”可以找到的其他文章)。

要求7和8 – 限制訪問和唯一ID

這兩件事都與你訪問應用程序的方式有關,因此介於編碼和設計之間。要求每個訪問者都有一個唯一的ID應該沒有問題,除非——你恰好允許人們通過訪客配置文件登錄和購物。我可以想到幾個允許你這樣做的網站,它本身並不是邪惡的,但使用組配置文件很危險,你必須格外小心,以確保它們沒有太多權限。一般來說,你應該努力設置唯一的ID,即使ID不是你保存的ID。例如,你可以讓人們以訪客身份登錄,但隨後立即在後台為該事件創建一個唯一的配置文件。我們還希望限制對持卡人數據的物理訪問。這可能是對未來的暗示,那時我們將能夠像艾薩克·阿西莫夫的《神奇旅程》中那樣將人們縮小到亞微觀尺寸,並將他們注入存儲設備以獲取卡數據的1和0……或者它也可能與鎖定的服務器機房、所有訪客的徽章、不讓任何人接近備份磁帶等事情有關。

要求10 – 跟踪和記錄對資源/數據的所有訪問

最後,不要低估跟踪和記錄訪問資源或持卡人數據的所有內容的重要性……我的意思是所有內容。應該記錄的事件包括登錄、註銷、數據訪問;數據更新,實際上任何涉及資源或數據元素並且你認為可能對審計跟踪或刑事審判中的證據有用的內容。你必須實現一個安全的日誌,每天檢查日誌以查找問題,並將日誌保存一年。對於PHP用戶來說,熟悉來自PHP-FIG組的PSR-3日誌記錄標準將是有益的,它提供了一種統一而靈活的方式來設置你的日誌記錄。與其在這裡深入探討,我建議你閱讀Patrick Mulvey的介紹性文章。

總結

我想真正強調的一件事是,PCI不是錦上添花。它是創建使用信用卡數據的應用程序的基礎部分。如果你正在編寫一個確實接收此類數據的應用程序,那麼無論你的客戶是否知道,它都適用於你。大部分內容都高於編碼級別,但它是真實的,你仍然必須注意它。 圖片來自Fotolia

關於PCI合規性和PHP開發的常見問題解答(FAQ)

什麼是PCI合規性,為什麼對PHP開發人員很重要?

PCI合規性是指遵守支付卡行業數據安全標準(PCI DSS),這是一套安全標準,旨在確保所有接受、處理、存儲或傳輸信用卡信息的公司都維護一個安全的環境。對於PHP開發人員來說,了解和實施PCI合規性至關重要,因為它有助於保護客戶的敏感數據,降低數據洩露的風險,並建立與用戶的信任。不遵守規定可能導致處罰、罰款,甚至喪失處理支付的能力。

PHP開發人員如何確保PCI合規性?

PHP開發人員可以通過幾個關鍵步驟來確保PCI合規性。這些步驟包括使用安全的編碼實踐來防止常見的漏洞,加密敏感數據,實施強大的訪問控制措施,定期測試和更新系統和應用程序,以及維護信息安全策略。

PHP中有哪些常見的安全漏洞,如何防止它們?

PHP中的一些常見安全漏洞包括SQL注入、跨站點腳本(XSS)和跨站點請求偽造(CSRF)。可以通過使用預準備語句或參數化查詢來防止SQL注入,驗證和清理用戶輸入來防止XSS,以及使用反CSRF令牌來防止CSRF攻擊來防止這些漏洞。

PHP開發人員如何安全地處理信用卡數據?

PHP開發人員可以通過遵循PCI DSS要求來安全地處理信用卡數據。這包括加密在開放的公共網絡上傳輸的持卡人數據,保護存儲的持卡人數據,實施強大的訪問控制措施,定期監控和測試網絡,以及維護信息安全策略。

加密在PCI合規性中扮演什麼角色?

加密在PCI合規性中扮演著至關重要的角色。它通過將敏感數據(例如信用卡信息)轉換為無法讀取的格式來幫助保護敏感數據,只有使用解密密鑰才能對其進行解密。這確保即使在傳輸過程中截獲數據,未經授權的個人也無法讀取或使用它。

PHP開發人員如何實施強大的訪問控制措施?

PHP開發人員可以通過確保為每個具有計算機訪問權限的人分配一個唯一的ID,限制對持卡人數據的物理訪問,以及根據業務需要了解的原則限制對持卡人數據的訪問來實施強大的訪問控制措施。此外,他們應該定期審查訪問控制措施並根據需要進行更新。

不遵守PCI DSS 會有什麼後果?

不遵守PCI DSS 會導致一系列後果,包括罰款、處罰,甚至喪失處理信用卡支付的能力。此外,它還會損害公司的聲譽並導致客戶信任度下降。

PHP開發人員多久應該測試一次他們的系統和應用程序是否存在安全漏洞?

PHP開發人員應該定期測試他們的系統和應用程序是否存在安全漏洞。測試頻率將取決於PCI DSS 的具體要求,但作為最佳實踐,系統和應用程序至少應每年測試一次,以及在任何重大更改之後進行測試。

什麼是信息安全策略,為什麼它對PCI合規性很重要?

信息安全策略是一家公司遵循的一套規則和程序,用於保護其信息資產。它對於PCI合規性很重要,因為它有助於確保所有員工都了解他們在保護持卡人數據方面的角色和責任,並為實施和維護安全控制提供框架。

PHP開發人員如何隨時了解最新的PCI DSS 要求和安全最佳實踐?

PHP開發人員可以通過定期檢查官方PCI安全標準委員會網站,訂閱相關的安全新聞通訊和博客,參加安全會議和網絡研討會,以及參加安全培訓和認證計劃來隨時了解最新的PCI DSS 要求和安全最佳實踐。

以上是PHP主| PCI合規性及PHP意味著什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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