2012-04-17 2 views
0

Я хочу проверить данные, которые пользователь вводит в форму. У меня есть только имя пользователя и два поля для пароля. Мой первый вопрос заключается в том, что я проверяю данные с помощью javascript, и он отлично работает, но я хочу проверить данные с помощью php слишком, чтобы javascript не работал. В случае, если javascript не работает, данные будут проверяться из PHP-кода, но моя проблема в том, что если javascript работает, данные будут проверяться также с javascript и php. Это прекрасно? Есть ли способ избежать проверки с помощью php, когда входные данные проверяются javascript? Кроме того, я проверяю входные данные (имя пользователя и пароль) на количество символов, для символов (я не допускаю специальных символов, только «_», «.» Цифры и буквы, чтобы избежать инъекции sql) - как это делается звучит для вас? Есть ли у вас какое-либо другое предложение для лучшей проверки?Проверка входных данных в php - javascript

Заранее спасибо.

+2

Вы всегда должны проверить на стороне php, потому что javascript небезопасен. –

ответ

2

Вы должны всегда выполнить проверку подлинности пользователя на сервере (php). проверка на стороне клиента (javascript) хороша только для лучшего пользовательского опыта. Также вы не должны ограничивать ввод некоторыми символами для предотвращения инъекций mysql, для этого существуют другие надежные методы.

+0

Спасибо за ваш ответ! :) Я использую эту функцию mysql_real_escape_string() для SQL-инъекции. Но не было бы лучше ограничить некоторые символы на входах? Я думаю пароль с цифрами, буквами и «_», «.» и, возможно, некоторые более специальные символы могут быть достаточно безопасными. – anna

+0

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

+0

Я хочу ограничить ввод пользователя из-за того, что вы сказали. Возможно, этого недостаточно, если я использую только функцию mysql_real_escape_string(). Было бы хорошо, если бы у меня было еще одно решение, которое предотвращало бы внедрение sql, поэтому я решил ограничить ввод. – anna

1

Проверка в оба конца в порядке и определенно рекомендуется. Если вы хотите избежать проверки с помощью PHP, если включен Javascript, вы можете добавить скрытое поле в форму и проверить это с помощью PHP.

E.G.

if(!isset($_POST['js_hidden_field'])) { 

    // Run Validation 

} 

Так что вы проверить на скрытом поле, если он не установлен, то запустить PHP Validation

+0

Как рекомендуется, я сделаю проверку в обоих из них (как вы все предлагаете), но спасибо за это решение. :) – anna

+0

Мое удовольствие! :) –

2

Да, вы должны проверить как на стороне клиента (JS) и на стороне сервера (PHP).

Сделайте это на клиенте для удобства вашего пользователя и для лучшего удобства пользователей.

Сделайте это на сервере, чтобы предотвратить вредоносную атаку, или, как вы сказали, в случае, если ваш пользователь отключен JS.

2

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

Как правило, нет ничего плохого и даже рекомендуется делать валидацию в обоих местах в Javascript и PHP.

1

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

клиент профи проверки сценариев на стороне:

  • оповещения пользователя перед отправкой данных, позволяющих им исправить себя
  • делает ваш сайт выглядеть немного более сложные

сервера плюсы проверки на стороне:

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

Короче говоря, делать то, что хорошо, это на самом деле лучше, чем просто делать то или другое.

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