2016-02-16 31 views
0

我想創建一個遊戲排行榜網站,其中將包含來自不同遊戲的人的高分。安全 - 將數據從第三方發送到我的服務器Ajax php

我有3個表users,gamesgamedata

各欄如下。

  • users:id |名稱

  • games:id |標題| owner_id

  • gamedata:user_id | game_id |高分

我有一個第三方遊戲開發商使用他們的遊戲創建一個submit score按鈕的JavaScript API。

當他們給我的數據我收到他們使用$_POST和使用" Insert into game_data(user_id, gameid, highscore) values('$_session['user_id']', '$gameid', '$score')"

現在你知道任何人都可以給我的$gameid$score假數據我game_data表查詢。

因爲我無法控制服務器上的這兩個數據,所以如何確保從第三方站點發送數據的安全性?

+0

嘗試[public key cryptography](https://en.wikipedia.org/wiki/Public-key_cryptography)和[this stack issue](http://stackoverflow.com/questions/12457234/encrypt-in-javascript -decrypt-in-php-using-public-key-cryptography) – morels

+0

如何在我的案例中使用它@morels? – Chaks

+0

只需遵循堆棧溢出示例。各種遊戲應該使用私鑰加密要提交的數據,然後發佈。你應該部署一個php服務器,在它聽到一個新的post請求之後,它會用你的公鑰解密這個消息並根據你的需要處理數據。這樣你就可以確定提交者的身份。 – morels

回答

1

確保安全性意味着什麼?

給你的例子,我將:

1)消毒數據。一般來說,不要信任用戶數據。

2)通過查看數據庫並檢查$gameid是否實際上是存在於表上的記錄來驗證數據。

3)確保您在可接受的範圍內驗證給定的$score

4)準備您的查詢以避免SQL注入。

5)可選:使用SSL(你可以得到免費的證書與Letsencrypt

6)如果可以的話,將大部分的邏輯在服務器端。讓客戶端發送動作,然後在邏輯服務器端進行數據和動作的精細控制。

相關問題