Чистая и безопасная строка в PHP

Возможные дубликаты:
PHP: максимально чистый / безопасный функция
Какой лучший метод для очистки пользовательского ввода с помощью PHP?

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

   function checkInput($str) {
        $str = @strip_tags($str);
        $str = @stripslashes($str);
        $str = mysql_real_escape_string($str);
        return $str;
    }

person Stefan    schedule 15.12.2010    source источник
comment
Согласен с Пеккой. Но подведем итоги. Нет такой вещи, как то, что вы пытаетесь сделать.   -  person DampeS8N    schedule 15.12.2010
comment
Все зависит от контекста. Невозможно, чтобы одна функция выполняла все. Например, вы хотите вызвать mysql_real_escape_string только для данных, которые поступают в базу данных. И вы хотите вызывать htmlspecialchars только для данных, которые отображаются. Так что волшебной пули нет (и быть не должно) ...   -  person ircmaxell    schedule 15.12.2010


Ответы (4)


Я бы удалил некоторые специальные символы, которые не имеют ничего общего в таких строках и могут использоваться для инъекций кода, например $% # ‹> | и так далее.

$invalid_characters = array("$", "%", "#", "<", ">", "|");
$str = str_replace($invalid_characters, "", $str);
person Thibault Witzig    schedule 15.12.2010

Что я должен добавить к моей функции, чтобы быть уверенным, что каждая строка, которая ей передается, будет удобна для сервера?

Это должно работать:

function checkInput($str) {
  return "";
}

Более подробное объяснение см. здесь

person troelskn    schedule 15.12.2010
comment
нет, но я хихикнула :) - person adrianTNT; 04.03.2016

Что означает дружественный к серверу?

Для проверки, например адресов электронной почты, обратите внимание на фильтрацию данных.

Чтобы убедиться, что строка безопасна для использования в базе данных, экранирование, например mysql_real_escape_string

При выводе данных используйте htmlspecialchars

person fire    schedule 15.12.2010

О базе данных проверьте заполнители PDO. Это кросс-СУБД.

person Mathias E.    schedule 15.12.2010
comment
и они также обеспечивают абстракцию над движком базы данных, работающим за - person Kishor Kundan; 30.03.2012