CustomerId и Request.QueryString в ASP.NET

Request.QueryString не очень безопасно. Если кто-то вошел в систему. Просто введите URL-адрес

myaccount.aspx?custId=10

Можно получить информацию о другом Заказчике.

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


person user478636    schedule 13.04.2011    source источник
comment
Надеюсь на пространный ответ, так как иначе мудро вам не до создания сайта с конфиденциальными данными. Безопасность в Интернете довольно сложна и подвержена ошибкам.   -  person Dykam    schedule 13.04.2011


Ответы (7)


Действительно, для myaccount.aspx пользователю не нужно передавать свой идентификатор в качестве параметра.

Как уже говорили другие, используйте членство. Или создайте хэш (зашифрованное значение) идентификатора пользователя и пароля и сохраните его как файл cookie или в объекте сеанса. Вы можете прочитать это вместо входного параметра.

person Gavin Ward    schedule 13.04.2011

Строки запроса надежны и не содержат ошибок.

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

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

person Bob    schedule 13.04.2011
comment
Название отредактировано .... извините, я не имел в виду, что они ошибочны ... Я имею в виду, что метод, который я использовал, был ошибочным. - person user478636; 13.04.2011
comment
Я не думаю, что конфиденциальные данные должны когда-либо отображаться в строке запроса, особенно имена полей БД. - person IrishChieftain; 13.04.2011

Это не входит в обязанности QueryString. Вам необходимо внедрить систему аутентификации и авторизации, желательно с MembershipProvider и RolesProvider.

person Daniel A. White    schedule 13.04.2011

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

person Joe    schedule 13.04.2011

Нет безопасного способа пройти его. После того, как пользователь вошел в систему, сохраните идентификатор в сеансе или что-то подобное, а затем всегда берите его оттуда.

person Shadow Wizard Wearing Mask V2    schedule 13.04.2011

Вы можете проверить членство asp.net.

person zer0w1dthspace    schedule 13.04.2011

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

person Mark Cidade    schedule 13.04.2011