Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Безопасность и ее общие принципы (http://www.flasher.ru/forum/showthread.php?t=161582)

windrunner31 26.07.2011 00:21

Безопасность и ее общие принципы
 
Итак,я делаю сайты и игры,в которых присутствует и передача данных между пользователями и регистрация и админ панели и тому подобное.Так вот,можете ли вы дать советы,как достигается максимальная безопастность кода?

NikolyA 26.07.2011 01:08

максимально безопасно код ты не защитишь, если кто задастся задачей ломануть тебя, защита не спасет

suVrik 26.07.2011 01:27

Если не читали.

Light 26.07.2011 05:53

Если речь идет о защите именно пользовательских данных (чтобы нельзя было пользоваться чужими админками и тому подобное), то в играх с регистрацией за безопасность обычно отвечает старый добрый пароль. Конечно, его можно подобрать при большом желании, но тут уж не ваша вина, если пароль выбран простой.

suVrik 26.07.2011 11:54

Цитата:

Если речь идет о защите именно пользовательских данных (чтобы нельзя было пользоваться чужими админками и тому подобное), то в играх с регистрацией за безопасность обычно отвечает старый добрый пароль. Конечно, его можно подобрать при большом желании, но тут уж не ваша вина, если пароль выбран простой.
В случае онлайн игр разработчик должен шифровать данные, которые передаются от пользователя серверу и от сервера пользователю. Защита flash ролика в этом случае нужна, что бы предотвратить дешифрацию данных.

petyar 26.07.2011 12:02

В случае онлайн игр главной "защитой" должно быть размещение всей игровой логики на сервере.

goodguy 26.07.2011 12:05

Цитата:

должно быть размещение всей игровой логики на сервере.
Ну вот кто будет размещать всю игровую логику на сервере? Какой должен быть сервер для этого? Суперкомпьютер оборонного ведомства Японии? На сервере нужно располагать только действительно важные элементы. Большую часть логики можно смело доверить клиенту

willis83 26.07.2011 12:18

windrunner31, Судя по вашей предыдущей теме, заявление "Я делаю сайты и игры" слишком громкое. Вы хотите делать сайты и игры, но не знаете с чего начать и кидаетесь из крайности в крайность. Не повторяйте самую распространенную ошибку новичков. Изучайте материал последовательно от легкого к трудному.

suVrik 26.07.2011 12:39

Цитата:

В случае онлайн игр главной "защитой" должно быть размещение всей игровой логики на сервере.
Предположим в игре есть перемещение персонажа. Игрок нажимает на клавишу и перемещается. Если динамически не кодировать данные, то игрок может 100 раз в секунду нажимать на клавишу и перемещаться в игре как флэш. Так что шифровка данных в любом случае должна присутствовать в игре.
Про логику я отчасти согласен. Но я бы сначала проверял на компьютере пользователя данные, а потом, если данные корректны, уже на сервере.
Цитата:

Большую часть логики можно смело доверить клиенту
Что вы можете смело доверить клиенту?

kackbip 26.07.2011 13:19

Клиенту почти ничего доверять нельзя... Клиент должен только отображать ту реальность которую ему диктует сервер. Только отображать. Но все правила игры реализуются на сервере. Иначе обязательно найдется читер, который подменит клиент.

Котяра 26.07.2011 13:19

Цитата:

редположим в игре есть перемещение персонажа. Игрок нажимает на клавишу и перемещается. Если динамически не кодировать данные, то игрок может 100 раз в секунду нажимать на клавишу и перемещаться в игре как флэш
И что? Это что-то даёт?
Самый правильный вариант - всю важную логику, которая влияет на выигрыш-проигрыш хранить на сервере. В крайнем случае валидировать. Например расчёт путей по a-star довольно нагрузочная операция, поэтому пути каждого из персонажей я вычислял на клиенте и отправлял серверу. Сервер только проверял являются ли точки пути соседями и проходимыми (чтобы не было читов)
По такому же принципу можно проверять почти все параметры вычисляемые на клиенте, т.к. часто проверка намного экономичнее расчётов.
Но команды от клиента - "я выиграл" - быть не должно в любом случае)

carrotoff 26.07.2011 13:20

Цитата:

Что вы можете смело доверить клиенту?
Всё, что не касается денег, игровых достижений и т.п. То, что не нарушит общую логику.

goodguy 26.07.2011 13:24

Цитата:

Сообщение от kackbip (Сообщение 1014751)
Клиенту почти ничего доверять нельзя... Клиент должен только отображать ту реальность которую ему диктует сервер. Только отображать. Но все правила игры реализуются на сервере. Иначе обязательно найдется читер, который подменит клиент.

Ну и что с того? Да и фиг с этим читером. Зато сервер не будет перегружен лишней работой.

Цитата:

Что вы можете смело доверить клиенту?
Многое можно доверить. Пепермещение персонажей, столкновения, вообще всю физику, на сервере можно прозводить валидацию отправленных с клиента результатов, которые будут записаны в базу. Как это делать, каждый решает для себя сам.

Котяра, carrotoff +1.

suVrik 26.07.2011 13:41

Цитата:

И что? Это что-то даёт?
Это даёт игроков-читеров, которые могут испортить игру другим игрокам, что очень нехорошо.
Цитата:

Пепермещение персонажей, столкновения, вообще всю физику
Но ведь это плохо, когда по игровому миру сквозь стены бегает/летает игрок с невероятной для игры скоростью.

FYI: В крупных онлайн играх у сервера находится карта препятствий мира и все движения персонажей проверяются.
FYI2: Вот тема, в которой администраторы серверов игры Tales of pirates давно мучаются с проблемой дюпания предметов, быстрого перемещения по карте, наложение заклинаний на большом расстоянии и прочими недочётами разработчиков. А совсем недавно в базу данных серверов загоняли SQL иньекции, из за того, что одно из полей, заносимого в базу, не проверялось.

kackbip 26.07.2011 13:47

Все выразили одну общую всем понятную мысль. :)

Сервер мог бы просчитывать физику для большого количества объектов. При условии грамотного разбиения на локации, сервер может заниматься всей логикой. Такой подход все таки безопаснее. Еще есть такая штука как двойной просчет - логика реализуется как на клиенте так и на сервере - на клиенте логика реализуется для того чтобы игра не превращалась в пошаговую стратегию в ожидании ответа или нотификации от сервера, но получая данные с сервера, клиент обязан принять состояние диктуемое сервером.

goodguy 26.07.2011 14:35

Цитата:

Это даёт игроков-читеров, которые могут испортить игру другим игрокам, что очень нехорошо.
Процент таких игроков будет очень невелик. Зато если делать всю логику на сервере, количество игроков будет намного меньше, так как сервер просто не будет справляться. Лично для меня лучше большее количество игроков, чем беспокойство о каком-то небольшом количестве читеров.
Цитата:

Сервер мог бы просчитывать физику для большого количества объектов. При условии грамотного разбиения на локации, сервер может заниматься всей логикой.
+ добавь еще кучу этих локаций, и сервер ляжет. А если физика сложная? Допустим, хотя бы, 3000 экземпляров box2d мира (о 3д вообще не говорю). Запусти на своем компе хотя бы 1000, и посмотри как вся эта система будет жутко тормозить.
Не должен он заниматься не своим делом. Валидация части данных максимум.
Создание всей логике на сервере попахивает паранойей и манией преследования в одном флаконе

windrunner31 26.07.2011 16:08

Так,значит о безопастности можно благополучно забыть,если используется п2п система?Просто у меня нет средств для покупки нормального сервера,поэтому я использую п2п систему,все работает исправно,но раз вы все говорите,что главную часть данных должен обрабатывать сервер,то п2п мне не катит,верно?

Котяра 26.07.2011 16:16

Если у вас нет сервера вообще - о чём речь тогда? Что такое передают клиенты друг-другу (p2p), что это можно и имеет смысл подделать?
Типа я сходил а2-а4 а оппоненту послал, что c2-c4? А смысл?

MXPain 26.07.2011 16:21

кстати на secureSWF сейчас вроде 30% скидка

Tr1te 26.07.2011 16:27

Любая онлайн игра ломается, а уж флэш и подавно, там вообще не надо спец навыков.

Тут все говорят о расчетах на стороне сервера, но в реальной жизни картина другая. Если ты делаешь какого нить фермера, то - да, может там и проверяют, в какую грядку ты репку воткнул. А если это нормальное ММО, то там так не делают. :)

Очень много популярных ММО ковырял, где клиент устанавливать надо, и всем им наплевать на проверку данных. Я думаю либо там люди сидят которые на деньги работают, либо действительно чтобы серваки не забивать.

Так что все кто тут пишут любо фермеров делают, либо проэкты не сильно популярные. Единственный кто заботятся о безопасности это всем известный WOW, и те кто использует GGClient, вот там да.

Так что с п2п о безопасности забудь.

suVrik 26.07.2011 16:29

Цитата:

Процент таких игроков будет очень невелик.
Один читер написал программу, заменяющую пакеты для вашей игры и выложил её в паблик. Пользователи увидели, что какой то игрок бегает с невероятной скоростью, летая сквозь стены и решили набрать в поисковике "Читы для %gamename%". В результате полный хаос в игре. Мало кто захочет в этом хаосе играть.
Да, конечно, этот самый читер может и не выложить эту самую программу, но надеятся на "авось" глупо т.к. в большинстве случаев способ взлома игры разлетается среди друзей "вирусным" способом на ура.

windrunner31 26.07.2011 16:45

Цитата:

Сообщение от Котяра (Сообщение 1014849)
Если у вас нет сервера вообще - о чём речь тогда? Что такое передают клиенты друг-другу (p2p), что это можно и имеет смысл подделать?
Типа я сходил а2-а4 а оппоненту послал, что c2-c4? А смысл?

Тот же,что и в любой другой ммо игре - нарушать правила и мешать играть другим.
Tr1te,не очень понял,что вы имели в виду?

petyar 26.07.2011 17:03

Смотря какая игра, конечно. В том же WoW некоторые баги существовали годами, но знали о них лишь немногие.

Если нет возможности перенести всю непосредственно контролирующую игровой процесс логику на сервер, то можно приблизительно проверять правильность результатов, пришедших с клиента. Впрочем, об этом уже писали.

alatar 26.07.2011 17:03

Действия игроков в p2p игре должны быть синхронизированы, если синхронизация не выполняется, читера надо выкидывать из игры.

Добавлено через 1 минуту
http://habrahabr.ru/blogs/gdev/123883/

Tr1te 26.07.2011 17:12

Имею ввиду, что игру не реально защитить. А тем более флеш, и тем более п2п.

Программа/клиент запускается на вашем компьютере и делай с ней что хочешь.

alatar, синхронизация не поможет. Во первых, если 2 игрока, то оба игрока могут быть подставными. А если нет, то один игрок может специально посылать ложные нарушения, что якобы оппонент читует, что не даст нормально людям поиграть.

petyar 26.07.2011 17:15

Полностью, конечно, нет. Даже в популярных ммо есть огромные дыры в безопасности. Хотя подозреваю, что знай они будущую ситуацию на моменте разработки, их бы не было. Хотя хорошую защиту писать лениво, ресурсо- и финансозатратно в любом случае.

alatar 26.07.2011 17:30

Цитата:

А если нет, то один игрок может специально посылать ложные нарушения, что якобы оппонент читует, что не даст нормально людям поиграть.
Каждый клиент посылает только свои действия, он не может подставить другого.

Tr1te 26.07.2011 17:36

Еще раз логику:
Мы с тобой во что-то играем, я тебе посылаю свои действия, ты проверяешь, после проверки выяснилось, что я стою где-то в стене, и ты говоришь серверу, что я читер и меня выкидывает из игры. Так?

-De- 26.07.2011 17:37

Писать надо просто нормально. 99% взломов серверов - из-за невнимательности и глупости программистов. Эхосервер - не ломается. Почему остальное должно непременно ломаться - не понятно, но хорошое оправдание быдлокоду. Если оставляешь дыру, то надо знать, что оставляешь её и что собираешься делать с ней.
В p2p можно таки делать рассинхронизацию и дисконнект (как в старкрафте). Чревато, что все, кто захотят сможет вместо проигрыша получить дисконнект. Но выдернуть шнур никто и так не помешает) А ещё если все обладают полной инфой, то привет мапхаки и воллхаки.

goodguy 26.07.2011 17:38

Цитата:

Сообщение от suVrik (Сообщение 1014854)
Один читер написал программу, заменяющую пакеты для вашей игры и выложил её в паблик. Пользователи увидели, что какой то игрок бегает с невероятной скоростью, летая сквозь стены и решили набрать в поисковике "Читы для %gamename%". В результате полный хаос в игре. Мало кто захочет в этом хаосе играть.
Да, конечно, этот самый читер может и не выложить эту самую программу, но надеятся на "авось" глупо т.к. в большинстве случаев способ взлома игры разлетается среди друзей "вирусным" способом на ура.

Да это все фигня. Сделали кряк, заделай дырку. А серверу всю логику даверять все равно накладнее.

Tr1te 26.07.2011 17:43

Цитата:

Сообщение от -De- (Сообщение 1014891)
Писать надо просто нормально. 99% взломов серверов - из-за невнимательности и глупости программистов.

Преднамеренно не проверяют данные на сервере - можно использовать для взлома. А почему не проверяют, потому что слишком много проверять, грубо говоря вся логика которая на клиенте должна также просчитаться и на сервере, тобишь сервак должен считать логику со скорость 10к компов к нему подключенных.

Цитата:

Сообщение от -De- (Сообщение 1014891)
Эхосервер - не ломается.

Было бы что ломать - сломали бы. :)

-De- 26.07.2011 17:52

Цитата:

Сообщение от Tr1te (Сообщение 1014898)
Преднамеренно не проверяют данные на сервере - можно использовать для взлома. А почему не проверяют, потому что слишком много проверять, грубо говоря вся логика которая на клиенте должна также просчитаться и на сервере, тобишь сервак должен считать логику со скорость 10к компов к нему подключенных.

Что за сказки, где такое?
Цитата:

Сообщение от Tr1te (Сообщение 1014898)
Было бы что ломать - сломали бы. :)

Пингуются почти все сервера - где взломы?

suVrik 26.07.2011 17:54

Цитата:

Да это все фигня. Сделали кряк, заделай дырку. А серверу всю логику даверять все равно накладнее.
А зачем откладывать то, что можно сделать при разработке на тот момент, когда игру уже сломали? :)

alatar 26.07.2011 18:09

Цитата:

Сообщение от Tr1te (Сообщение 1014890)
...ты говоришь серверу, что я читер и меня выкидывает из игры. Так?

Какой сервер в p2p? Вылетит игрок у которого будет рассинхронизация (хеш состояния не совпадет) с остальными.

windrunner31 26.07.2011 18:33

Я примерно так и предсатвлял себе сделать защиту в моей игре,но всеже есть одна проблема-
Вот играю я(игрок А) и другой человек(игрок Б),Так вот,я считерил,а игрок Б заметил это и выбросил меня из игры,все нормально.
Но вот другая ситуация - ни один из игроков не читерил,но игрок Б послал запрос о том,что игрок А - читер,и его кикает,хотя ничего подобного не было,как быть с этим?

alatar 26.07.2011 18:35

Как реализуете, так и будет. Зачем делать возможность сказать, что другой игрок читер?

Tr1te 26.07.2011 18:46

alatar, я все таки вас не понимаю. Вот есть например диапазон урона который игрок может нанести. Я считаю для себя урон, напишу клиент так чтобы всегда выпадал максимальный урон, и посылаю это другому игроку, как тут защититесь от чита с помощью синхронизации?

Добавлено через 4 минуты
Цитата:

Сообщение от -De- (Сообщение 1014903)
Что за сказки, где такое?

Ну начинается, оффтопить, доказывать что такое бывает или не бывает.

Цитата:

Сообщение от -De- (Сообщение 1014903)
Пингуются почти все сервера - где взломы?

Там где нужно они есть. Я не видел ни одной крупной мморпг которую нельзя ломануть. Опять таки повторяю, что проблемы только с GGClient'ом ибо он проверяет целостность оперативной памяти и то нашел там что можно записывать что угодно в ячейку памяти которая уже использовалась, от этого можно плясать.

alatar 26.07.2011 18:54

Все игроки хранят состояние игры, всем передается не урон, а действие (например, ударить), после отработки всеми игроками действий (каждый у себя), у каждого игрока генерируется хеш состояния игры. Если у кого-то хеш не совпал с остальными его выкидывает. Все равно, что он там у себя накрутил, это будет только на его машине.

Tr1te 26.07.2011 18:57

Передалось действие, а урон может быть от 10 до 15, генерится случайно, кто будет считать? В суприм коммандере то понятно, там он фиксированный.

Кстати, за ссылку на блог - спасибо, очень интересно.

alatar 26.07.2011 19:14

Цитата:

Передалось действие, а урон может быть от 10 до 15, генерится случайно, кто будет считать? В суприм коммандере то понятно, там он фиксированный.
Тогда уже полное ТЗ приводи, а то если бы да кабы... :)


Часовой пояс GMT +4, время: 00:37.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.