2013-07-31 5 views
0

У меня есть форма входа в аккаунт на моем сайте внутри страницы, где пользователи могут искать вещи после входа в систему.проверка, если форма была отправлена ​​с моего сайта

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

Мой вопрос в том, как я могу определить, отправляется ли форма от третьего лица, а не с моего сайта?

+0

Как я знаю, у вас есть свойство 'Page.PreviousPage' http://msdn.microsoft.com/library/system.web.ui.page.previouspage.aspx – FSou1

ответ

0

У вас есть HTTP-заголовок referer, но, к сожалению, он не является точным на 100%, и в некоторых случаях его можно изменить в середине запроса.

Вы можете добавить дополнительный параметр в свою локальную форму. Если параметр отсутствует, то сообщение появляется на стороннем сайте.

1

Как заявил Клаудио, вы не можете надежно использовать значение «referer». Значение может быть подделано. Более безопасным подходом было бы использовать токен CSRF или что-то похожее на это.

Например, вы можете включить идентификатор сеанса ASP.NET в элемент скрытой формы. Затем, когда форма отправлена, сравните значение элемента формы с идентификатором сеанса пользователя. Если они не совпадают, представление формы не поступало с вашего сайта.

+0

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

Смежные вопросы