2012-03-09 2 views
1

В google chrome есть что-то, называемое элементом Inspect, вы получаете доступ к нему, нажимая f12 или rigth click Inspect element.Как защитить форму отправки от

Так у меня есть от

<form> 
<textarea name="title" id="title" maxlength="120"/></textarea> 
</form> 

Итак, если использование Inpect элемента и редактировать страницу и изменить maxlenght до 500 я могу отправить данные больше, чем 120.So как я могу убедиться, что данные 120, даже если пользователь редактировать страницу с Inpect элементом

Если я использовать JavaScript для чек длины по-прежнему пользователь может редактировать JavaScript, а

+1

Или я мог бы просто осмотреть элемент формы и увидеть атрибут действия, чтобы увидеть, где данные формы отправляются и подчиняться ему напрямую, передавая ему все, что я хочу. Или я могу быть в каком-то старом или действительно дурацком браузере, у которого есть ошибка, в которой атрибут length игнорируется. Слушайте Кэлина, серверная сторона проверяет * все *. – Anthony

ответ

4

Вы всегда должны проверить представленные данные на стороне сервера. Не доверяйте ничего, что пользователь представляет.

[Off темы] Также будьте осторожны, чтобы не допустить какое-либо инъекции (клиентские скрипты, SQL, ничего, что сервер или браузер другого пользователя может случайно выполнить)

+0

Просто как это. Никогда не доверяйте пользовательским данным, никогда не доверяйте браузеру. На самом деле гораздо проще выполнять проверку на стороне сервера, чем попытки на стороне клиента с использованием хэшей и шифров и т. Д. Просто проверьте сервер, чтобы добавить дополнительный уровень безопасности и целостности. – Anthony

0

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

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

1

как я могу убедиться, что данные 120, даже если пользователь редактировать страницу с Inpect элементом

Убедитесь, что на стороне сервера конечно.

if (strlen($_POST['data']) > 120) // some error 

не имеет большого

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

0

Функция «Проверять элемент» Google Chrome - отличный инструмент, но, как вы говорите, он может манипулировать страницами, и это было сказано ранее на Apple и Microsoft как «незаконный взлом». Невозможно остановить это. Попробуйте использовать встроенную проверку.

+0

Inspect Element - это находка, как и Firebug. Любой, кто знает, как использовать эти инструменты (помимо «эй, что это такое делает?»), Также будет знать, как отправить запрос POST непосредственно на сервер. И не раз я взломал DOM стороннего сайта, чтобы не получить форму, чтобы сделать что-то, что она не должна была делать, но что-то, что она * должна была делать, но какой-то жуткий javascript нарушил поток формы (например, они скрывали поле адреса, если не было выбрано другое поле, но это поле было неактивным, потому что страница была перезагружена или что-то еще). – Anthony

+0

Я не говорю, что это не полезно, я ЛЮБЛЮ ЭТО! но другие не делают :) –

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