![]() |
Безопасность и ее общие принципы
Итак,я делаю сайты и игры,в которых присутствует и передача данных между пользователями и регистрация и админ панели и тому подобное.Так вот,можете ли вы дать советы,как достигается максимальная безопастность кода?
|
максимально безопасно код ты не защитишь, если кто задастся задачей ломануть тебя, защита не спасет
|
|
Если речь идет о защите именно пользовательских данных (чтобы нельзя было пользоваться чужими админками и тому подобное), то в играх с регистрацией за безопасность обычно отвечает старый добрый пароль. Конечно, его можно подобрать при большом желании, но тут уж не ваша вина, если пароль выбран простой.
|
Цитата:
|
В случае онлайн игр главной "защитой" должно быть размещение всей игровой логики на сервере.
|
Цитата:
|
windrunner31, Судя по вашей предыдущей теме, заявление "Я делаю сайты и игры" слишком громкое. Вы хотите делать сайты и игры, но не знаете с чего начать и кидаетесь из крайности в крайность. Не повторяйте самую распространенную ошибку новичков. Изучайте материал последовательно от легкого к трудному.
|
Цитата:
Про логику я отчасти согласен. Но я бы сначала проверял на компьютере пользователя данные, а потом, если данные корректны, уже на сервере. Цитата:
|
Клиенту почти ничего доверять нельзя... Клиент должен только отображать ту реальность которую ему диктует сервер. Только отображать. Но все правила игры реализуются на сервере. Иначе обязательно найдется читер, который подменит клиент.
|
Цитата:
Самый правильный вариант - всю важную логику, которая влияет на выигрыш-проигрыш хранить на сервере. В крайнем случае валидировать. Например расчёт путей по a-star довольно нагрузочная операция, поэтому пути каждого из персонажей я вычислял на клиенте и отправлял серверу. Сервер только проверял являются ли точки пути соседями и проходимыми (чтобы не было читов) По такому же принципу можно проверять почти все параметры вычисляемые на клиенте, т.к. часто проверка намного экономичнее расчётов. Но команды от клиента - "я выиграл" - быть не должно в любом случае) |
Цитата:
|
Цитата:
Цитата:
Котяра, carrotoff +1. |
Цитата:
Цитата:
FYI: В крупных онлайн играх у сервера находится карта препятствий мира и все движения персонажей проверяются. FYI2: Вот тема, в которой администраторы серверов игры Tales of pirates давно мучаются с проблемой дюпания предметов, быстрого перемещения по карте, наложение заклинаний на большом расстоянии и прочими недочётами разработчиков. А совсем недавно в базу данных серверов загоняли SQL иньекции, из за того, что одно из полей, заносимого в базу, не проверялось. |
Все выразили одну общую всем понятную мысль. :)
Сервер мог бы просчитывать физику для большого количества объектов. При условии грамотного разбиения на локации, сервер может заниматься всей логикой. Такой подход все таки безопаснее. Еще есть такая штука как двойной просчет - логика реализуется как на клиенте так и на сервере - на клиенте логика реализуется для того чтобы игра не превращалась в пошаговую стратегию в ожидании ответа или нотификации от сервера, но получая данные с сервера, клиент обязан принять состояние диктуемое сервером. |
Цитата:
Цитата:
Не должен он заниматься не своим делом. Валидация части данных максимум. Создание всей логике на сервере попахивает паранойей и манией преследования в одном флаконе |
Так,значит о безопастности можно благополучно забыть,если используется п2п система?Просто у меня нет средств для покупки нормального сервера,поэтому я использую п2п систему,все работает исправно,но раз вы все говорите,что главную часть данных должен обрабатывать сервер,то п2п мне не катит,верно?
|
Если у вас нет сервера вообще - о чём речь тогда? Что такое передают клиенты друг-другу (p2p), что это можно и имеет смысл подделать?
Типа я сходил а2-а4 а оппоненту послал, что c2-c4? А смысл? |
кстати на secureSWF сейчас вроде 30% скидка
|
Любая онлайн игра ломается, а уж флэш и подавно, там вообще не надо спец навыков.
Тут все говорят о расчетах на стороне сервера, но в реальной жизни картина другая. Если ты делаешь какого нить фермера, то - да, может там и проверяют, в какую грядку ты репку воткнул. А если это нормальное ММО, то там так не делают. :) Очень много популярных ММО ковырял, где клиент устанавливать надо, и всем им наплевать на проверку данных. Я думаю либо там люди сидят которые на деньги работают, либо действительно чтобы серваки не забивать. Так что все кто тут пишут любо фермеров делают, либо проэкты не сильно популярные. Единственный кто заботятся о безопасности это всем известный WOW, и те кто использует GGClient, вот там да. Так что с п2п о безопасности забудь. |
Цитата:
Да, конечно, этот самый читер может и не выложить эту самую программу, но надеятся на "авось" глупо т.к. в большинстве случаев способ взлома игры разлетается среди друзей "вирусным" способом на ура. |
Цитата:
Tr1te,не очень понял,что вы имели в виду? |
Смотря какая игра, конечно. В том же WoW некоторые баги существовали годами, но знали о них лишь немногие.
Если нет возможности перенести всю непосредственно контролирующую игровой процесс логику на сервер, то можно приблизительно проверять правильность результатов, пришедших с клиента. Впрочем, об этом уже писали. |
Действия игроков в p2p игре должны быть синхронизированы, если синхронизация не выполняется, читера надо выкидывать из игры.
Добавлено через 1 минуту http://habrahabr.ru/blogs/gdev/123883/ |
Имею ввиду, что игру не реально защитить. А тем более флеш, и тем более п2п.
Программа/клиент запускается на вашем компьютере и делай с ней что хочешь. alatar, синхронизация не поможет. Во первых, если 2 игрока, то оба игрока могут быть подставными. А если нет, то один игрок может специально посылать ложные нарушения, что якобы оппонент читует, что не даст нормально людям поиграть. |
Полностью, конечно, нет. Даже в популярных ммо есть огромные дыры в безопасности. Хотя подозреваю, что знай они будущую ситуацию на моменте разработки, их бы не было. Хотя хорошую защиту писать лениво, ресурсо- и финансозатратно в любом случае.
|
Цитата:
|
Еще раз логику:
Мы с тобой во что-то играем, я тебе посылаю свои действия, ты проверяешь, после проверки выяснилось, что я стою где-то в стене, и ты говоришь серверу, что я читер и меня выкидывает из игры. Так? |
Писать надо просто нормально. 99% взломов серверов - из-за невнимательности и глупости программистов. Эхосервер - не ломается. Почему остальное должно непременно ломаться - не понятно, но хорошое оправдание быдлокоду. Если оставляешь дыру, то надо знать, что оставляешь её и что собираешься делать с ней.
В p2p можно таки делать рассинхронизацию и дисконнект (как в старкрафте). Чревато, что все, кто захотят сможет вместо проигрыша получить дисконнект. Но выдернуть шнур никто и так не помешает) А ещё если все обладают полной инфой, то привет мапхаки и воллхаки. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
|
Я примерно так и предсатвлял себе сделать защиту в моей игре,но всеже есть одна проблема-
Вот играю я(игрок А) и другой человек(игрок Б),Так вот,я считерил,а игрок Б заметил это и выбросил меня из игры,все нормально. Но вот другая ситуация - ни один из игроков не читерил,но игрок Б послал запрос о том,что игрок А - читер,и его кикает,хотя ничего подобного не было,как быть с этим? |
Как реализуете, так и будет. Зачем делать возможность сказать, что другой игрок читер?
|
alatar, я все таки вас не понимаю. Вот есть например диапазон урона который игрок может нанести. Я считаю для себя урон, напишу клиент так чтобы всегда выпадал максимальный урон, и посылаю это другому игроку, как тут защититесь от чита с помощью синхронизации?
Добавлено через 4 минуты Цитата:
Цитата:
|
Все игроки хранят состояние игры, всем передается не урон, а действие (например, ударить), после отработки всеми игроками действий (каждый у себя), у каждого игрока генерируется хеш состояния игры. Если у кого-то хеш не совпал с остальными его выкидывает. Все равно, что он там у себя накрутил, это будет только на его машине.
|
Передалось действие, а урон может быть от 10 до 15, генерится случайно, кто будет считать? В суприм коммандере то понятно, там он фиксированный.
Кстати, за ссылку на блог - спасибо, очень интересно. |
Цитата:
|
| Часовой пояс GMT +4, время: 00:37. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.