鑰匙要點
- > Braintree支付解決方案提供透明的重定向和braintree.js作為解決方案,以幫助最大程度地減少小型企業的PCI合規負擔。 >透明的重定向允許將信用卡數據直接傳輸到Braintree的服務器,繞過企業主的系統,從而降低了數據洩露的風險。
- > Braintree PHP客戶端庫簡化了透明重定向的集成過程,但它可以使與客戶信用卡信息相同的形式的非付款相關信息的收集和驗證複雜化。 要實施透明重定向,企業主必須將其網站與付款網關的API集成,設置一個表格,將客戶的付款信息直接發佈到網關,並處理髮送回其網站的響應。
- >透明的重定向增強安全性並提高了網站性能,但它需要對網絡開發和支付網關API有更深入的了解,這可能是某些企業主的潛在缺陷。
- >僅提及“ PCI合規性”通常會引起混亂的外觀和汗水的手掌的結合,這些企業主在線接受信用卡付款。但是這是什麼意思? >
- >這是一個複雜的話題,但簡短的版本是,主要信用卡公司在2006年成立了一個名為“支付卡行業安全標準委員會(PCI SSC)”的理事會,以創建一套標準化安全策略和程序的規則處理和存儲敏感信用卡信息時,商人應遵循(PCI DSS)。為了確定您的系統是否合規,您通常會從八個選項之一中選擇適當的自我評估問卷(SAQ),然後回答一系列問題以確定您是否確實合規。大型公司經常採用合格的安全評估師(QSA)的服務來幫助他們填寫SAQ D(SAQ中最重要的),這可能會花費數十萬美元。更糟的是:如果您的系統被妥協,並且確定它們在被違反時不合規,則您可能對每次事件的罰款最高$ 500,000。
>那麼,小企業主應該做什麼?這就是Braintree支付解決方案的出現。他們提供了兩種解決方案,以最大程度地減少您的PCI合規負擔:透明重定向和Braintree.js。我應該提到,Braintree和任何其他符合PCI DSS的服務提供商都無法告訴您要填寫哪個SAQ,或者您的系統是否合規。但是,他們與安全指標(一個行業領先的QSA)配對,以提供無需成本的解決方案,以幫助所有客戶實現並維持PCI的合規性。根據他們的經驗,使用透明重定向或braintree.js的客戶通常能夠填寫SAQ A,這比SAQ D少得多(因此成本高得多)。您可以在這裡閱讀更多。
,但背景足夠;讓我們編寫一些代碼。
入門
本文將重點放在透明的重定向方法上。我們要做的第一件事就是前往Braintree獲取服務器端API鍵。對於那些沒有生產帳戶的人,請將瀏覽器指向Braintree Sandbox並註冊測試帳戶。登錄,然後單擊“帳戶 - > API密鑰”。然後,單擊“生成新的”按鈕,最後單擊新生成的API鍵的“私有密鑰”列下的“視圖”。您將被帶到以下屏幕上,其中包含配置Braintree客戶端庫所需的所有信息。
>您可以看到它甚至具有一種工具,可以用多種語言為您生成配置代碼。
現在是時候安裝實際的Braintree PHP客戶庫庫了。我們可以通過運行以下命令來使用Composer來做到這一點:
>composer require braintree/braintree:*
透明的重定向
>有助於確定您是否必須填寫SAQ D或SAQ A的主要因素之一是信用卡數據是否通過系統傳輸。在典型的服務器到服務器(S2S)模型的開頭,您的Web服務器將向客戶的瀏覽器發送付款表。填寫表格後,客戶將按提交提交,該提交將數據張貼回您的Web服務器,這反過來將這些數據轉發給Braintree進行驗證和處理。看起來像這樣:
但是,使用透明的重定向,設置了表單操作,以便將表單直接發佈到Braintree的服務器,並將響應發送回客戶端瀏覽器。然後,使用HTTP 303重定向將瀏覽器重定向到Web服務器上的腳本。最後,Web服務器腳本確認了通過Braintree的交易,並將結果呈現給客戶端瀏覽器。因此,該模型看起來更像是這樣:>現在我們有了理論,讓我們繼續寫一些代碼。那些想看到完整版本的人可以在github上找到它。
>>我們要做的第一件事就是創建一個非常基本的HTML表單,以便我們可以輸入一些數據以發送給Braintree進行處理。我將盡可能簡單,以便我們專注於功能。
>composer require braintree/braintree:*
>這裡沒有任何復雜的事情發生。您唯一會注意到的是輸入字段名稱為數組格式。您可以在此處看到有效字段名稱的完整列表。我從該頁面上指出的另一件事是,如果您使用的是在使用數組來輸入名稱的問題的框架(我在看著您,Zend Framework!),那麼您可以使用替代的雙重下劃線。句法。因此,您的到期日期輸入看起來像這樣:
<span><span> </span> <span><span><span> lang<span>="en"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><div> id<span>="wrap"</span>> <span><span><span><form> method<span>="post"</span> action<span>=""</span> autocomplete<span>="off"</span>></form></span> </span> <span><span><span><label>></label></span>Name on Card: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cardholder_name]"</span>></span><span><span></span>></span> </span> <span><span><span><label>></label></span>Card Number: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][number]"</span>></span><span><span></span>></span> </span> <span><span><span><label>></label></span>CVV: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cvv]"</span> class<span>="short"</span>></span><span><span></span>></span> </span> <span><span><span><label>></label></span>Expiration Date (MM/YYYY): <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][expiration_date]"</span> class<span>="short"</span>></span><span><span></span>></span> </span> <span><span><span><input> type<span>="submit"</span> value<span>="submit payment"</span>></span> </span> <span><span><span></span>></span> </span> <span><span><span></span></span></span></span></span></span></span></span></span></span></span></span></span> </div></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span></span>></span></span></span></span></span>
>您可能會注意到的唯一另一件事是,我在我的表單中添加了一個“自動完成”屬性,並將其值設置為關閉。 Braintree建議這樣做,我希望這樣做的原因是顯而易見的……
為了利用我們形式的透明重定向的魔力,我們還需要做其他一些事情。但是在這樣做之前,我們需要配置腳本以與Braintree的API合作。>
<span><span><span><input> type<span>="text"</span> name<span>="transaction__credit_card__expiration_date"</span>></span></span></span>
>第一行只允許我們利用作曲家的自動加載器,並使用Braintree的庫,而無需明確包含任何其他文件。希望接下來的四行看起來很熟悉,因為它們是從我在上一節中介紹的Sandbox Control面板API密鑰工具中逐字複製的。顯然,您將用自己的控制面板帳戶中的代碼替換。>
我要做的下一件事是設置表單操作,以便我們的客戶將其敏感數據直接發送給Braintree,這是使用TR的重點。幸運的是,通過提供輔助對象/方法,Braintree庫使這非常容易。因此,只需像這樣修改您的表單代碼:composer require braintree/braintree:*
>我們唯一要做的是創建一個隱藏的輸入,其中包含您希望Braintree的URL表示的URL表示,將客戶重定向到他們提交表單後以及您不需要的任何信息他們能夠指定。例如,這是您可以放入交易金額的地方。就風格而言,我喜歡將返回URL設置為付款表格本身,以便我可以向用戶顯示任何錯誤,並給他們重新提交的機會。因此,這就是外觀:
<span><span> </span> <span><span><span> lang<span>="en"</span>></span> </span> <span><span><span>></span> </span> <span><span><span><div> id<span>="wrap"</span>> <span><span><span><form> method<span>="post"</span> action<span>=""</span> autocomplete<span>="off"</span>></form></span> </span> <span><span><span><label>></label></span>Name on Card: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cardholder_name]"</span>></span><span><span></span>></span> </span> <span><span><span><label>></label></span>Card Number: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][number]"</span>></span><span><span></span>></span> </span> <span><span><span><label>></label></span>CVV: <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][cvv]"</span> class<span>="short"</span>></span><span><span></span>></span> </span> <span><span><span><label>></label></span>Expiration Date (MM/YYYY): <span><span><input> type<span>="text"</span> name<span>="transaction[credit_card][expiration_date]"</span> class<span>="short"</span>></span><span><span></span>></span> </span> <span><span><span><input> type<span>="submit"</span> value<span>="submit payment"</span>></span> </span> <span><span><span></span>></span> </span> <span><span><span></span></span></span></span></span></span></span></span></span></span></span></span></span> </div></span>></span> </span> <span><span><span></span>></span> </span> <span><span><span></span>></span></span></span></span></span>
顯然我在這裡進行核對數量,但是在生產應用程序中,您要么使用某些服務器端邏輯來生成此數字,要么在以未指定的總計捐贈表單的情況下生成它,您將創建一個表單字段並允許用戶提供一個。我通常還將“提交和解”選項設置為真。否則此交易將簡單
現在,我只需要將其添加為隱藏字段,如我的形式:>
<span><span><span><input> type<span>="text"</span> name<span>="transaction__credit_card__expiration_date"</span>></span></span></span>
>現在我們準備將數據提交給Braintree,我們需要添加一些代碼來處理實際的透明重定向響應。<span><span><?php </span></span><span> <span>require('vendor/autoload.php'); </span></span><span> </span><span> <span>Braintree_Configuration<span>::</span>environment('sandbox'); </span></span><span> <span>Braintree_Configuration<span>::</span>merchantId('YOUR_MERCHANT_ID'); </span></span><span> <span>Braintree_Configuration<span>::</span>publicKey('YOUR_PUBLIC_KEY'); </span></span><span> <span>Braintree_Configuration<span>::</span>privateKey('YOUR_PRIVATE_KEY'); </span></span><span> </span><span> <span>?></span></span></span>
現在讓我們弄清楚我們剛剛做了什麼。當用戶按下提交按鈕時,表格直接發佈到Braintree,所有客戶的敏感信息都將安全存儲在其PCI CSS符合的服務器上。然後,將HTTP 303重定向發送到瀏覽器,該瀏覽器將用戶發送到生成$ TR_DATA變量時指定的URL,並將幾個參數附加到URL的查詢字符串。成功提交數據時,其中一個參數將是http_status,如果用Braintree的服務器順利運行所有內容,則將設置為200。顯然,在生產中,您還需要處理非2000響應代碼,,但是目前,如果我們成功地將我們的付款信息提交給他們的系統,我們只是確保僅在此內部執行此內部代碼。
下一步發生的事情是,我們必須從透明的重定向中取出查詢字符串,然後將其發送回Braintree以完成交易。因此,我們運行另一個庫函數(BrainTree_transparentRedirect ::確認)並為其提供我們的URL查詢字符串,以便告訴Braintree繼續處理我們的付款。一旦發生這種情況,Braintree就會將我們的腳本發送回結果對象。在內部,該對象可以是braintree_result_error或braintree_result_successful,但是兩個對像都有布爾成功屬性,因此您可以查看交易是否成功。
>您還可能注意到我將整個確認包裹在嘗試/捕獲塊中。使用同一頁面顯示表單和處理結果的一個缺點是您只能確認一次TR查詢字符串。這意味著,如果某人在交易失敗後鍵入重新加載按鈕,您的代碼將嘗試重新確認過期的查詢字符串,而Braintree將拋出異常。
>現在,我們擁有所需的一切,我們可以繼續進行一些測試交易。可以在此處找到有關使用沙箱的完整文檔,但是如果您真的很興奮並且想立即進行成功的交易,請繼續並在“卡上的名稱”中輸入您的名字,4111111111111111(4個,其次是15個)作為“卡號”,CVV框中的123,將來的任何日期作為到期日期。如果一切順利,您應該能夠返回沙箱,單擊“高級搜索”下的“交易”,然後單擊“搜索”按鈕,請參閱您的第一個成功交易。>
變得花哨>
收集它只是將以下字段添加到您的表格中的問題。> composer require braintree/braintree:*
說到驗證,TR會使您的付款表格的服務器端驗證複雜化。假設我想需要客戶的電子郵件地址。我不知道用戶直到交易已確認後才將其留空。我發現的解決方案是在TR腳本的成功塊中運行驗證,然後如果我的驗證未通過,則使交易失效。這樣就會改變我們的代碼:
如您所見,如果我的本地驗證沒有通過,我使用客戶端庫使用我的braintree_result_success對象的事務ID。
>最後,在我們的基本示例中,我不費心為用戶重新流動表單字段,因為我們所有的字段都包含Braintree隱藏在服務器中的敏感信用卡數據。但是,既然我們添加了一些客戶數據,我可以使用來自Braintree Rustem對象的數據預填充那些較不敏感的字段。您可以在我的github樣本中看到完整的代碼,但是了解發生的事情的訣竅是知道braintree_result_success對象將用戶取消的表單數據存儲在其交易屬性中,而braintree_result_error將其存儲在參數屬性中。因此,例如,當交易成功時,將在$ result-> tractaction-> customer ['firstName']中找到名字變量,而失敗的事務將其存儲在$ result-> params ['trassAction'] [''中。客戶'] ['firstName']。
總結
> Braintree的透明重定向是最大程度地減少應用程序對敏感客戶數據的接觸,從而減少您的PCI合規負擔的一種方法,其PHP客戶庫非常簡化了集成過程,但確實使收集和驗證變得更加困難與客戶的信用卡信息相同形式的付款相關信息。
下次,我們將查看他們的另一個聰明的解決方案:braintree.js。
經常詢問有關透明重定向的問題
>在付款處理中使用透明重定向的主要目的是什麼?
>
透明的重定向用於付款處理以增強交易的安全性。它們允許客戶的敏感數據直接發送到付款網關,並繞過商人的服務器。這降低了數據洩露的風險,並幫助商家遵守支付卡行業數據安全標準(PCI DSS)。>在網站優化的背景下,透明的重定向如何工作?優化,透明的重定向可以幫助減少HTTP請求的數量,從而提高站點的加載速度。當用戶訪問網頁時,服務器將帶有狀態代碼的HTTP響應。如果狀態代碼指示重定向,則瀏覽器必須提出額外的HTTP請求,這可能會減慢加載時間。透明的重定向可以消除這一額外的步驟,使網站更快,更有效。
>>透明重定向與傳統重定向之間有什麼區別?交易過程,可以將敏感的客戶數據暴露於潛在的安全風險中。另一方面,透明的重定向繞過商人的服務器,並將數據直接發送到付款網關,從而增強了交易的安全性。
>>>>> >如何在網站上實現透明的重定向?您需要將您的網站與付款網關的API集成。這涉及在您的網站上設置表格,該表格將客戶的付款信息直接發佈到網關。然後,網關處理交易並將響應發送回您的網站。
>使用透明的重定向?
>使用透明重定向的主要好處是提高安全性並提高了安全性的主要好處。網站性能。通過繞過商人的服務器,透明的重定向降低了數據洩露的風險。它還通過減少HTTP請求的數量來幫助提高網站的加載速度。>
>是否有透明重定向?實施可能比傳統的重定向更為複雜。它需要更深入地了解Web開發和支付網關API。但是,增強的安全性和績效優勢通常超過了這個挑戰。 >與所有付款網關兼容的透明重定向?>並非所有付款網關都支持透明的重定向。重要的是要與您的付款網關提供商聯繫,看看他們是否提供此功能。支持透明重定向的一些流行的支付網關包括Braintree,Bluefin和PayPal。
>透明的重定向如何影響用戶體驗?
從用戶的角度來看,透明的重定向是無縫的。用戶只需在商家網站上輸入其付款信息,然後單擊“提交”。重定向發生在背景中,因此用戶與傳統的交易過程相比沒有註意到任何區別。 透明的重定向可以幫助PCI符合性嗎?是的,是的,透明的重定向可以幫助PCI合規性。通過將客戶的付款信息直接發送到付款網關,透明的重定向降低了PCI符合商家的範圍。這可以使商人更容易符合支付卡行業設定的嚴格的安全標準。
>>如果透明的重定向失敗,會發生什麼?
如果透明的重定向失敗,則交易將不會被處理。確切的響應將取決於付款網關的API。在大多數情況下,網關會將錯誤消息發送回商家的網站,然後將其顯示給用戶。優雅地處理這些錯誤以確保良好的用戶體驗很重要。
>
以上是透明的重定向與Braintree的詳細內容。更多資訊請關注PHP中文網其他相關文章!

tostartaphpsession,usesesses_start()attheScript'Sbeginning.1)placeitbeforeanyOutputtosetThesessionCookie.2)useSessionsforuserDatalikeloginstatusorshoppingcarts.3)regenerateSessiveIdStopreventFentfixationAttacks.s.4)考慮使用AttActAcks.s.s.4)

會話再生是指在用戶進行敏感操作時生成新會話ID並使舊ID失效,以防會話固定攻擊。實現步驟包括:1.檢測敏感操作,2.生成新會話ID,3.銷毀舊會話ID,4.更新用戶端會話信息。

PHP会话对应用性能有显著影响。优化方法包括:1.使用数据库存储会话数据,提升响应速度;2.减少会话数据使用,只存储必要信息;3.采用非阻塞会话处理器,提高并发能力;4.调整会话过期时间,平衡用户体验和服务器负担;5.使用持久会话,减少数据读写次数。

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

phpIdentifiesauser'ssessionSessionSessionCookiesAndSessionId.1)whiwsession_start()被稱為,phpgeneratesainiquesesesessionIdStoredInacookInAcookInAcienamedInAcienamedphpsessIdontheuser'sbrowser'sbrowser.2)thisIdallowSphptpptpptpptpptpptpptpptoretoreteretrieetrieetrieetrieetrieetrieetreetrieetrieetrieetrieetremthafromtheserver。

PHP會話的安全可以通過以下措施實現:1.使用session_regenerate_id()在用戶登錄或重要操作時重新生成會話ID。 2.通過HTTPS協議加密傳輸會話ID。 3.使用session_save_path()指定安全目錄存儲會話數據,並正確設置權限。

phpsessionFilesArestoredIntheDirectorySpecifiedBysession.save_path,通常是/tmponunix-likesystemsorc:\ windows \ windows \ temponwindows.tocustomizethis:tocustomizEthis:1)useession_save_save_save_path_path()


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版
SublimeText3 Linux最新版

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

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

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。