С чего начать на iOS аудио синтезатор?

Способы дезинфекции ввода пользователя с помощью PHP:

  • Использовать современные версии MySQL и PHP.

  • Установите кодировку явно:

    $mysqli->set_charset("utf8");
    manual
    $pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF8', $user, $password);
    manual
    $pdo->exec("set names utf8");
    manual
    $pdo = new PDO(
    "mysql:host=$host;dbname=$db", $user, $pass, 
    array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
    )
    );
    manual
    mysql_set_charset('utf8')
    [устарела в PHP 5.5.0, удалена в PHP 7.0.0].
  • Использовать безопасные кодировки:

    Выберите utf8, latin1, ascii .., не используйте уязвимые кодировки big5, cp932, gb2312, gbk, sjis.
  • Использовать пространственную функцию:

    Подготовленные команды MySQLi:
    $stmt = $mysqli->prepare('SELECT * FROM test WHERE name = ? LIMIT 1'); 
    $param = "' OR 1=1 /*";
    $stmt->bind_param('s', $param);
    $stmt->execute();
    PDO :: quote () - помещает кавычки вокруг (если требуется) и экранирует специальные символы во входной строке, используя стиль цитирования, соответствующий базовому драйверу:
    $pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF8', $user, $password);explicit set the character set
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);disable emulating prepared statements to prevent fallback to emulating statements that MySQL can't prepare natively (to prevent injection)
    $var = $pdo->quote("' OR 1=1 /*");not only escapes the literal, but also quotes it (in single-quote ' characters) $stmt = $pdo->query("SELECT * FROM test WHERE name = $var LIMIT 1");
    Подготовленные отчеты PDO : vs подготовленные операторы MySQLi поддерживают больше драйверов баз данных и именованных параметров :
    $pdo = new PDO('mysql:host=localhost;dbname=testdb;charset=UTF8', $user, $password);explicit set the character set
    $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);disable emulating prepared statements to prevent fallback to emulating statements that MySQL can't prepare natively (to prevent injection) $stmt = $pdo->prepare('SELECT * FROM test WHERE name = ? LIMIT 1'); $stmt->execute(["' OR 1=1 /*"]);
    mysql_real_escape_string [устарела в PHP 5.5.0, удалена в PHP 7.0.0]. mysqli_real_escape_string Вызывает специальные символы в строке для использования в инструкции SQL, принимая во внимание текущую кодировку соединения. Но рекомендуется использовать подготовленные заявления, потому что они не просто экранированные строки, а инструкция содержит полный план выполнения запроса, включая таблицы и индексы, которые он будет использовать, это оптимизированный способ. Используйте одиночные кавычки ('') вокруг ваших переменных внутри вашего запроса.
  • Проверить переменную содержит то, что вы ожидаете:

    Если вы ожидаете целое число, используйте:
    ctype_digit — Check for numeric character(s);
    $value = (int) $value;
    $value = intval($value);
    $var = filter_var('0755', FILTER_VALIDATE_INT, $options);
    Для использования строк:
    is_string() — Find whether the type of a variable is string
    Используйте Функция фильтра filter_var () - фильтрует переменную с указанным фильтром:
    $email = filter_var($email, FILTER_SANITIZE_EMAIL);
    $newstr = filter_var($str, FILTER_SANITIZE_STRING);
    более предопределенные фильтры filter_input () - получает определенную внешнюю переменную по имени и, возможно, ее фильтрует :
    $search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
    preg_match () - выполнить регулярное выражение; Напишите свою собственную функцию проверки.
30
задан Leo Dabus 6 November 2017 в 05:14
поделиться