我正在開發一個調用.PHP腳本以將數據注入到MySQL數據庫的網站。保護PHP Web服務調用
由於這些.PHP腳本沒有安全性,世界上任何人都可以通過網絡運行它們,只要他們知道正確的參數名稱並將數據注入到數據庫中即可。
我對安全性知之甚少,所以我正在尋找解決方案來保護這些「Web服務」。
我讀過使用SSL的方式,但我不確定。
如果任何人可以提出建議,並指向我的教程或網站如何實現這一點,我會非常感激。
我們正在使用Apache Web服務器的方式,如果重要的話。
我正在開發一個調用.PHP腳本以將數據注入到MySQL數據庫的網站。保護PHP Web服務調用
由於這些.PHP腳本沒有安全性,世界上任何人都可以通過網絡運行它們,只要他們知道正確的參數名稱並將數據注入到數據庫中即可。
我對安全性知之甚少,所以我正在尋找解決方案來保護這些「Web服務」。
我讀過使用SSL的方式,但我不確定。
如果任何人可以提出建議,並指向我的教程或網站如何實現這一點,我會非常感激。
我們正在使用Apache Web服務器的方式,如果重要的話。
SSL本身不能解決問題。如果有人可以擊中http://yoursite.com/service.php
,他們也可以擊中https://yoursite.com/service.php
。簡單的SSL確保通過網絡傳輸的實際數據被加密。但是加密注入請求與標準未加密注入請求會產生相同的效果 - 您仍然會將數據注入到數據庫中。
你需要的是某種密碼系統。一個簡單的骨骼系統將需要一個祕密字符與每個請求一起發送,並且沒有該字詞的任何請求被拒絕/忽略。然而,那麼你必須保密這個祕密詞,並且網上沒有東西保密很長時間。
接下來是爲您的服務的每個授權用戶分配一個特定的密鑰。沒有任何東西可以阻止用戶與他人分享他們的密鑰,但是你可以獲得每個用戶的密鑰,您可以追蹤並毆打DID分享密鑰的人。
過去,您可以使用HTTP級別身份驗證,並配合每個用戶的訪問密鑰,這樣可以防止API隨意戳動。如果沒有http級別的密碼,API腳本甚至不會被調用,甚至在調用API腳本時也必須存在正確的API密鑰。
您可以使用它來實現基本的http身份驗證:http://php.net/manual/en/features.http-auth.php – SuitedSloth
如果您需要客戶端擁有證書才能使用SSL連接到.PHP網站服務,是不是認爲安全? – user1090205
不知道你的意思是「沒有安全性」 - 小心SQL注入(http://en.wikipedia.org/wiki/SQL_injection)。 SSL只是確保從客戶端到服務器的傳輸安全的一種方式,但它不會影響您寫入數據庫的數據。還有很多需要關注的東西,但你需要更具體地說明你想要「保護」什麼(也許顯示一些代碼)。 – Quasdunk
您是否需要首先通過http連接調用這些腳本?如果不是,我的建議是看看(並使用)PHP CLI。這是一個更安全的方法。 – maraspin