2010-07-12 2 views
2

Пусть говорят, у меня есть пост от так:Вопрос о методе POST безопасности

<form action="myApp/form_action.asp" method="post"> 
    First name: <input type="text" name="fname" /><br /> 
    Last name: <input type="text" name="lname" /><br /> 
    <input type="submit" value="Submit" /> 
</form> 

Итак, пусть говорят, что это очень плохо, кто хочет купить что-то делать в моем приложении. Например, мой form_action.asp не только принимать пары «имя_файл», «LName», но и «пол», может ли он/она делает запрос на своем собственном, как это ....

<form action="http://www.myDomain.com/myApp/form_action.asp" method="post"> 
    First name: <input type="text" name="fname" /><br /> 
    Last name: <input type="text" name="lname" /><br /> 
    Gender: <input type="text" name="gender" /><br /> 
    <input type="submit" value="Submit" /> 
</form> 

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

Если он/она может отправить этот запрос, он может каким-либо образом избежать его/ее? Спасибо.

+0

btw, почему ваша форма принимает пол, если вы не хотите, чтобы это было отправлено? Немного больше справочной информации было бы полезно ... – galambalazs

+0

Я хочу, чтобы пользователь назначил свой пол изначально, после этого я не буду его/ее, чтобы сбросить свой пол. – Tattat

+0

Затем просто проверьте, установлен ли пол. Если нет, позвольте ему установить. – Konerak

ответ

2

Вы думаете об этом неправильно. Забудьте о HTML-формах. Это не то, что обрабатывает ваш сервер. Он обрабатывает HTTP-запросы.

И (довольно очевидно) люди могут отправлять вам HTTP-запросы, содержащие , что бы они ни хотели. Не только дополнительные поля, но также поля со значениями, которые форма не позволяет, или поля с именами длиной 5000 символов и/или значениями, которые так долго.

Так что вы абсолютно должны это сделать, это определить, что представляет собой допустимый входной сигнал и отклонять вход, который не является. В вашем случае это довольно просто: если форма не должна содержать поле «gender», тогда сервер игнорирует такое поле или прерывается с ошибкой, если она присутствует.

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

+0

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

+0

@Tattat: вопрос тогда становится специфичным для ASP. Я уверен, что есть способ, чтобы не отображаемые значения автоматически перезаписывали серверные данные. –

+0

@Tattat: Тогда вы можете сделать это на сервере. Вы можете проверить, установлен ли пол, если он установлен, генерирует исключение. – Douglas

0

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

1

Вы не можете избежать этого. Входы, поступающие от клиентов, НИКОГДА не защищаются и могут ВСЕГДА быть подделаны.

Вам придется реализовать свои чеки serveride в самом файле ASP.

-1

Если ваш файл формы формы i.e. form_action.asp не вызывает переменную $ _POST ['gender'], я не вижу, как это повлияет на ваш скрипт.

Убедитесь, что вы дезинфицируете свои переменные, поэтому для имени и фамилии вы действительно хотели бы принять A-Za-z, пробел и, возможно, дефисы и апострофы.

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

Удостоверьтесь, что вы также избегаете переменных, прежде чем вводить их в свою базу данных, я использую mysql_real_escape_string в php, но не знаю asp, поэтому вам придется искать его.

+1

Да, потому что вы уверены, черт возьми, не хотите, чтобы клиенты из Японии, Китая, Индии, Греции, Израиля или России ... –

+0

Прошу прощения, был просто примером ... –

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