時,我已經寫HTML使用jQuery過去,爲了訪問特定的PHP頁面我只是一直在做這樣的:PHP和AJAX安全
user.php?Action=1&User=Adrian.....
,這將返回純文本JSON,其中jQuery的轉換到一個JavaScript對象。不過,我有幾個有關這種方法的問題。
- 這安全嗎? JSON以純文本形式傳回。它是否應該通過HTTPS使用?
- 防止直接訪問PHP的最佳方法是什麼?只需檢查活動會話?
- 這整個方法好嗎?
乾杯, 阿德里安
時,我已經寫HTML使用jQuery過去,爲了訪問特定的PHP頁面我只是一直在做這樣的:PHP和AJAX安全
user.php?Action=1&User=Adrian.....
,這將返回純文本JSON,其中jQuery的轉換到一個JavaScript對象。不過,我有幾個有關這種方法的問題。
乾杯, 阿德里安
對於2號,這取決於你在做什麼。
如果您對'user.php'文件做任何修改數據庫的操作,您都希望使用POST而不是GET(這會隱藏URL欄中的參數,並且如果您的頁面被抓取/抓取)。
使用POST,你user.php的文件,$_POST
取代的$_GET
實例。
在你的jQuery Ajax調用,確保參數的「類型」設置爲「POST」
type: "POST",
GET請求只應該永遠是做任何事情,獲取並從你的數據模型顯示的數據( DB,不管)。 POST請求用於進行任何更新,添加(更嚴格是PUT)或刪除(DELETE)。
如果只希望特定用戶訪問user.php的腳本,然後你想檢查用戶的會話,並確保其與用戶試圖訪問特定用戶參數相匹配。
1)這取決於你要轉移什麼。如果您通過HTTPS傳輸信用卡數據,當然。如果您傳輸的敏感度較低,可能不是。
2和3)確保您檢查您輸入的SQL注入,就像你使用任何$ _GET變量。你應該真正對待它,你通常會如何處理$ _GET數據
每當我允許JSON/crud訪問時,我總是確保爲它提供服務的PHP頁面(user.php
)落後於基於會話的訪問控制規則(角色基於或基於組的權限)。然後我列出允許用戶/組/角色訪問哪些表/字段。複雜程度取決於所服務數據的性質。
驗證在PHP活動會話,或者如果必要的登錄。如果您的任何數據都很敏感,那麼您應該只通過SSL提供服務。還考慮使用通過AJAX請求發送的令牌來防止跨站點請求僞造。將XSRF標記值與PHP會話進行比較。 –
你爲什麼要防止直接訪問PHP? (首先,這是不可能的 - 如果Ajax可以訪問它,用戶就可以訪問它。)如果出於安全考慮,你有一個漏洞。另外,你爲什麼要通過HTTPS?裏面有敏感數據嗎? – Ryan