Разрешить просмотр веб-страницы только по ссылке - PullRequest
0 голосов
/ 20 сентября 2011

Можно ли разрешить просмотр веб-страницы только при нажатии на ссылку, указывающую на нее?Я отправляю электронные письма членам моей организации со ссылками, которые прикрепляют значения к URL, чтобы я мог использовать phps $ _GET, чтобы выяснить, кто они есть на веб-странице, и соответствующим образом обновить.Меня беспокоит то, что люди меняют значения ссылки и меняют данные других участников.Если есть лучший способ сделать это, я весь слух.Использование системы входа в систему не вариант.

Ответы [ 4 ]

2 голосов
/ 20 сентября 2011

Не совсем, нет.

То, что вы могли бы сделать, это включить токен, который вы сохраняете связанным с определенным идентификатором пользователя и который очень трудно угадать, и включить его в ссылку - тогда, когдавы получаете запрос GET, вы проверяете, чтобы токен соответствовал тому, который, как вы знаете, является правильным для этого идентификатора пользователя.(Вы будете хранить «правильные» токены локально в базе данных при отправке электронных писем.)

Например, у вас может быть ...

/modify_info_script?user_id=123&token=aSDqWEqwejk2123salskq

И тогда вы быиметь таблицу базы данных или другое хранилище с ...

user_id          token
----------------------
...              ...
122              klqwkejajwie8u8213nak
123              aSDqWEqwejk2123salskq
...              ...

, и поэтому, если кто-то попытается изменить user_id в URL-адресе, токен не будет совпадать, и вы можете отклонить его запрос.Например, это будет отклонено ...

/modify_info_script?user_id=122&token=aSDqWEqwejk2123salskq

, поскольку правильный токен для 122 будет klqwkejajwie8u8213nak, а не aSDqWEqwejk2123salskq.

Это, вероятно, лучший вариантесли использование системы входа в систему не вариант.Однако вы должны убедиться, что использование системы входа в систему вообще не подходит, потому что данные пользователя действительно должны быть защищены входом в систему.

0 голосов
/ 20 сентября 2011

Довольно много систем сброса пароля работают так, что вы можете сказать, что это достаточно безопасно, если вы используете достаточно длинный случайный токен.Что-то вроде 32 символов должно быть в порядке.

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

/modify_info_script?token=aSDqWEqwejk2123salskqfilltill32chars

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

Также, если вы действительно боитесь, что кто-то может попытаться угадать это, просто тайм-аут / запрет пользователей после 3 неправильных попыток токена.В любом случае, никто не должен пытаться вводить их вручную.

0 голосов
/ 20 сентября 2011

Чтобы проверить, пришел ли кто-то по ссылке, см. $ _SERVER ['HTTP_REFERER'].

Чтобы защитить приложение от манипулирования ссылками, вы можете объединить его с секретной парольной фразой (только внутри, парольная фразане должен быть известен никому) и использовать md5 () для результата.Прикрепите MD5 к URL.Если кто-то манипулирует URL-адресом, вы будете знать, потому что MD5 «URL-адрес плюс ваш пароль-минус MD5» будет другим.

0 голосов
/ 20 сентября 2011

Это действительно неправильный способ защитить ваш сайт.

Однако самое простое решение - проверить заголовок «referer» и убедиться, что он не пустой. Если оно не пустое, то оно было получено от клика (или они его подделали, поэтому это небезопасно).

Реальный способ защитить данные - это реализовать систему входа в систему с набором разрешений.

...