2010-09-23 2 views
0

IMHO,«Это необходимо», чтобы обрезать все пробелы в POST/GET vars?

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

Есть ли случаи, когда это может быть вредно?

Может ли кто-нибудь дать аргументы в пользу такого рода практики?

ответ

2

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

+0

хороший аргумент о пароле =)! – holms

0

Как правило, рекомендуется очищать введенный пользователем текст, который обычно включает удаление посторонних пробелов, проблемных символов пунктуации и т. Д. Это также может включать замену нескольких соседних пространств на одно пространство.

Само собой разумеется, что вы также должны защищать себя от атак SQL и HTML-инъекций путем правильной очистки текста (предварительной обработки), предоставленного пользователем. Самый простой способ - игнорировать пунктуацию; Другим подходом является преобразование пунктуации в безопасные escape-последовательности.

+0

Защита почты/получения варсов является обязательным для меня. Но теперь вопросы в основном касаются обрезки пробелов от начала и строки. – holms

0

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

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

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

«Эта строка» будет разделена на массив, который выглядит следующим образом.

$string[0] = '' 
$string[1] = 'This' 
$string[2] = 'string' 

но «Эта строка» просто

$string[0] = 'This' 
$string[1] = 'string' 

Если вы делаете операции со строками, вы можете узнать, сколько слов в строке, первый случай (выше) будет показывать вам 3, в то время как последний покажет вам 2. Существует слишком много вещей, которые нужно искать, если не нужны начальные или конечные пробелы.

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