У меня вопрос, на который я нахожусь. Хорошо, это для моей игры в Unity3D.Unity3D to PHP Проблемы безопасности
Чтобы это имело смысл с точки зрения того, что люди обычно играют. Допустим, у игрока 500 золотых на их счете (сохранено в базе данных). И игрок зарабатывает 243 золота, выполняя какую-то задачу, как игра (Unity3D) сообщает файлу PHP, который они заработали специально 243 Gold?
Потому что здесь проблема, В Unity3D есть класс под названием WWW. Позволяет отправлять некоторую строку в файл PHP.
int currentGold;
string goldToSend = currentGold.ToString(); // Only using that for example.
WWWForm form = new WWWForm();
form.AddField("NameOfPostRequestInPHPFile",goldToSend);
WWW www = new WWW("website.com/PHPFile.php", form);
Теперь, как вы можете видеть, я нахожусь в довольно большой дилеммой, будучи вы не можете доверять клиенту что-нибудь, как бы один на самом деле отправить случайное количество золота на стороне клиента в PHP, чтобы затем поместить в базу данных.
Проблема, с которой я столкнулся, заключается в том, как можно заставить PHP понять, что происходит в игре, без того, чтобы клиент действительно рассказывал об этом, а если вы не можете доверять клиенту, как клиент может сказать PHP для загрузки, используйте эти данные, а затем поместите их в базу данных.
Я думал об использовании хэшей, но тогда это все еще вызывает проблему на стороне клиента.
Позволяет сказать
if(sentGold == 243){
string hash = hash01;
// Change it to hash1000 (to get 1000 gold).
}
if(sentGold == 1000){
string hash = hash1000;
}
Как вы можете видеть, используя, если заявления явно не будет работать либо, потому что тогда хэши только могут быть изменены локально, чтобы соответствовать их коварные попытки. Плюс это выглядит как мусор, чтобы иметь 20K, если заявления.
Я знаю, что невозможно полностью остановить взлом. Но в то же время, если я что-то сделаю, я хочу сделать это правильно, а не наполовину, если вы понимаете, что я имею в виду?
Если вы дошли до этого момента, прочитав мое справочное сообщение. Я очень ценю то время, которое вы прочитали, Это много значит для меня.
Теперь, если есть какая-то другая технология или подсказки, которые вы могли бы знать, что могло бы помочь мне в этом, или даже посоветоваться с ним (я искал дни), но я все еще зашел в тупик, потому что никто не обращается тот факт, что они могут использовать секретные ключи и т. д., но они не могут решить, что строка, которую они отправляют, может легко подделаться. Все, что они должны сделать, это изменение за 243 до 9999999999, а затем они богаты.
Вы не сможете использовать метод, о котором говорите. Сервер не проверяет достоверность передаваемой информации. Вам нужно будет проверить информацию, передаваемую клиентом. Например, если золото является точкой появления, проверяя, что точка появления в базе данных и какие предметы и количество находятся в этой точке появления. – spencdev