Как защититься?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
DenisKhomusyak
Сообщения: 102
Зарегистрирован: 2015.10.18, 22:45
Откуда: Sant Tropetz
Контактная информация:

Как защититься?

Сообщение DenisKhomusyak »

Всем привет, и сразу к делу.
Появилась такая проблема, подскажите как гуглить :D
Не могу понять куда копать, чтобы защититься от изменения атрибутов в полях.
Например есть поле
<input type="text" id="model-value" class="form-control" name="Model[value]" value="1" readonly style="display:none;">
Но если изменить value и послать запрос, это легко обходится. Как на стороне клиента запретить изменять атрибуты?Возможно ли это?Спасибо за внимание)

PS Надеюсь доходчиво обьяснил :lol:
Изображение
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Как защититься?

Сообщение samdark »

Невозможно. Только валидировать на сервере.
caHek2x
Сообщения: 1242
Зарегистрирован: 2016.04.12, 20:41

Re: Как защититься?

Сообщение caHek2x »

на стороне клиента забудьте про защиту ... ващу форму переверстают и отправят то что захотят ... а на стороне сервера сценарии спасут ...
Аватара пользователя
DenisKhomusyak
Сообщения: 102
Зарегистрирован: 2015.10.18, 22:45
Откуда: Sant Tropetz
Контактная информация:

Re: Как защититься?

Сообщение DenisKhomusyak »

caHek2x писал(а):на стороне клиента забудьте про защиту ... ващу форму переверстают и отправят то что захотят ... а на стороне сервера сценарии спасут ...
Понял, спасибо.:)
Есть пример какой нибудь?) Читал про них, но не допер как они в Yii +)
Изображение
Аватара пользователя
AlexxxT
Сообщения: 59
Зарегистрирован: 2013.02.17, 15:17
Откуда: Kiev

Re: Как защититься?

Сообщение AlexxxT »

DenisKhomusyak писал(а):
caHek2x писал(а):на стороне клиента забудьте про защиту ... ващу форму переверстают и отправят то что захотят ... а на стороне сервера сценарии спасут ...
Понял, спасибо.:)
Есть пример какой нибудь?) Читал про них, но не допер как они в Yii +)
В Yii так же, как и в PHP :D
Аватара пользователя
DenisKhomusyak
Сообщения: 102
Зарегистрирован: 2015.10.18, 22:45
Откуда: Sant Tropetz
Контактная информация:

Re: Как защититься?

Сообщение DenisKhomusyak »

AlexxxT писал(а):
DenisKhomusyak писал(а):
caHek2x писал(а):на стороне клиента забудьте про защиту ... ващу форму переверстают и отправят то что захотят ... а на стороне сервера сценарии спасут ...
Понял, спасибо.:)
Есть пример какой нибудь?) Читал про них, но не допер как они в Yii +)
В Yii так же, как и в PHP :D
Просто еще ни разу не использовал их. Может подскажите с какой нибудь литературы выдернуть или так гуглить да смотреть?)
Изображение
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Как защититься?

Сообщение maleks »

Да про rules() вам говорят, в них правила валидации на сервере
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как защититься?

Сообщение ElisDN »

Решение - не использовать скрытые поля.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как защититься?

Сообщение zelenin »

если вы что-то пишете в скрытое поле, значит вы это откуда-то взяли на стороне сервера. А раз откуда-то взяли на стороне сервера, и это не предназначено для редактирования на клиенте, нет смысла вообще это на клиент тащить.
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: Как защититься?

Сообщение kwasti »

zelenin писал(а):если вы что-то пишете в скрытое поле, значит вы это откуда-то взяли на стороне сервера. А раз откуда-то взяли на стороне сервера, и это не предназначено для редактирования на клиенте, нет смысла вообще это на клиент тащить.
Для повышения собственных знаний, вопрос:

Как поступать, если обработчик формы единый, а форм несколько?
я пошел по варианту скрытого поля, в котором передается название формы.
Для меня конечно не критично, если кто-то изменит название формы - да и фиг с ним, но если вдруг потребуется что-то более важное?

так же при редактировании элемента в gii генерация идет формы использующей для поиска по ИД, если в админке это не так критично (по крайней мере риск меньше, т.к. предполагаем, админят более ответственные люди), то на основном сайте, есть реальный шанс изменить данные не того элемента.

Я тут как-то думал отказаться от ИД формы в строке, а перейти на guid, который просто так не подобрать, как это сделано у майкрософт в sharepoint, там все через guid ищется.

другого варианта не придумал..
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как защититься?

Сообщение zelenin »

kwasti писал(а):
zelenin писал(а):если вы что-то пишете в скрытое поле, значит вы это откуда-то взяли на стороне сервера. А раз откуда-то взяли на стороне сервера, и это не предназначено для редактирования на клиенте, нет смысла вообще это на клиент тащить.
Для повышения собственных знаний, вопрос:

Как поступать, если обработчик формы единый, а форм несколько?
конкретнее: как определяется значение скрытого поля? модели формы разные или одна модель?

kwasti писал(а):так же при редактировании элемента в gii генерация идет формы использующей для поиска по ИД, если в админке это не так критично (по крайней мере риск меньше, т.к. предполагаем, админят более ответственные люди), то на основном сайте, есть реальный шанс изменить данные не того элемента.
почему человек, не имеющий права редактировать запись с id = 10 может ее отредактировать? как же rbac?
kwasti писал(а):Я тут как-то думал отказаться от ИД формы в строке, а перейти на guid, который просто так не подобрать, как это сделано у майкрософт в sharepoint, там все через guid ищется.
это называется uuid (guid - частный случай).
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: Как защититься?

Сообщение kwasti »

у меня на странице несколько модальных форм создается (не стал заморачиваться с подгрузкой через скрипт),
в основном это обратная связь.
данные этих форм сохраняются в одну таблицу.
во всех вормах есть некоторые стандартные поля типа name,email, message, subject эти поля пишутся в таблицу в соответствующие поля и происходит оповещение пользователя пиьсмом на емайл, все не стандартные поля (задаются в админке) в формате json я записываю в таблице в одно поле.
чтобы при обработке понимать откуда пришла запись, я добавил скрытое поле в котором и пишу название модальной формы и конечно оно уходит на сторону клиента. т.е. технически мне это сейчас не критично, если кто-то поменяет название формы, то плевать, просто это обращение останется не обработанным, оно и не стоит внимания такое обращение.

по поводу изменить:
может так совпасть что пользователь будет иметь права как на 20-ю запись так и на 10-ю...
т.е. возможно не специально а случайно или еще по какой причин данные элемента с ИД=10 будуть отредактированы, а отправлены на сервер с ид=20.
Теоретически это возможно.

С uuid (в шарике это guid) такая возможность сводится к 0.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как защититься?

Сообщение zelenin »

kwasti писал(а):у меня на странице несколько модальных форм создается (не стал заморачиваться с подгрузкой через скрипт),
в основном это обратная связь.
данные этих форм сохраняются в одну таблицу.
во всех вормах есть некоторые стандартные поля типа name,email, message, subject эти поля пишутся в таблицу в соответствующие поля и происходит оповещение пользователя пиьсмом на емайл, все не стандартные поля (задаются в админке) в формате json я записываю в таблице в одно поле.
чтобы при обработке понимать откуда пришла запись, я добавил скрытое поле в котором и пишу название модальной формы и конечно оно уходит на сторону клиента. т.е. технически мне это сейчас не критично, если кто-то поменяет название формы, то плевать, просто это обращение останется не обработанным, оно и не стоит внимания такое обращение.
в данном случае смысла о защите говорить нет, т.к. она тут просто не нужна, и оттого, что изменят скрытое поле ровно ничего не изменится.
kwasti писал(а):по поводу изменить:
может так совпасть что пользователь будет иметь права как на 20-ю запись так и на 10-ю...
т.е. возможно не специально а случайно или еще по какой причин данные элемента с ИД=10 будуть отредактированы, а отправлены на сервер с ид=20.
Теоретически это возможно.
случайно такого не может быть. специально - может, и uuid здесь не спасет.
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: Как защититься?

Сообщение kwasti »

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

Код: Выделить всё

generateRandomString()
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как защититься?

Сообщение zelenin »

kwasti писал(а):так uuid это же сплошной набор случайных букв и цифр и попасть достаточно сложно в другой uuid
попасть просто - копируем id из грида и подставляем. Напомню, что юзер имеет доступ к редактированию обеих записей. Если он хочет отредактировать другую запись таким извращенным способом, это собственно дело его. Не надо защищать юзера от его привилегий.
Аналогично с вашими модальными формами - если он хочет отослать другую форму, вызвав первую, это дело его.
kwasti
Сообщения: 262
Зарегистрирован: 2016.01.28, 16:14

Re: Как защититься?

Сообщение kwasti »

все так, скопировать может, но это нужно знать откуда копировать...(грида нет)
и исключается вариант случайно изменить цифру и попасть
с вариантом обычного ИД, все записи идут по порядку...и шансов попасть на доступную запись резко возрастает
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Как защититься?

Сообщение zelenin »

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