我已經做了一些研究,如何防止假的跨源請求,並已發現了很多有用的信息。但是,他們中沒有一個似乎直接解決了我的問題,並且由於我的應用程序必須處理這種特定情況,所以我想完全理解它。如何保護跨域請求;允許第三個網站POST數據
我有一個簡單的PHP郵件網站:mailsite.com
這個網站將允許其他預先定義的地址,例如,user.com,以POST發送數據給它,處理包含to
信息和mesaage
;然後從郵件發送郵件到to
,郵件message
。
目前,我使用$_SERVER[ "HTTP_ORIGIN" ]
和$_SERVER[ "HTTP_REFERER" ]
來檢查請求來自哪裏;並處理它們,如果它來自預定義的域。不過,我讀過一些文章,說:
- HTTP_ORIGIN甚至沒有索引的PHP文件中,因爲它是非常每個瀏覽器之類的事情,所以拒絕發送這些信息將無法工作的瀏覽器。 HTTP_REFERER很容易僞造。
- 代幣可以很好地防止CSRF。
但是,我允許的請求來自第三個預先定義的網站,令牌如何在這種情況下工作?
我的問題是:如果我允許特定域將POST數據發送到我的網站,我如何確保(或最安全的方式)這些請求來自我期望的站點? HTTP_ORIGIN不夠安全嗎?我敢於考慮允許第三方網站將數據發佈到我的網站,因爲我看到Facebook允許人們訪問他們的數據庫。必須有一些可能的解決方案來檢查請求來自哪裏。
我確定你的意思是'$ _SERVER [「HTTP_REFFERAL」]'對嗎?你犯了一個錯字。 –
是的。我很抱歉打字錯誤。我從手機上輸入了它。非常感謝您指出。 – user3622260
不客氣。 –