Вопрос:
Это не безопасно ли вводить пароль в строку?
$ b = (строка) $ a;
Комментарий:
Я не хочу знать о более эффективных способах, я просто хочу безопасный способ. Просто для следующего варианта использования:
Шаг 1 — Зарегистрируйте пароль (PW):
Шаг 2 — Войти в систему, получить PW:
Я думаю, что это самый простой способ, но один из самых безопасных. Я хочу, чтобы КАЖДЫЙ персонаж для PW,
и почему не азиатские символы.
Я подумал: этот метод не должен вызывать проблем с escape-проблемами, так как какой бы ни был код, он теперь является строкой и сравнивается только со строкой. Но я могу иметь любой характер без опасности.
База данных Mysql должна позволять каждому символу, когда установлено UTF8, верно?
Поэтому, пожалуйста, ответьте мне: эта идея простодушна?
заранее спасибо
Герд
Я не верю, что приведение пароля к строке в любом случае повлияет на общую безопасность вашего приложения. В этом смысле я думаю, что вопрос немного ошибочный.
В качестве примера того, почему приведение к строке на самом деле не помогает или не причиняет вам вреда, рассмотрим один из наиболее распространенных векторов атаки на базу данных: SQL-инъекция. Установите на веб-странице форму, которая принимает пользовательский ввод, отправляет ее в сценарий на стороне сервера, который создает запросы с этим пользовательским вводом, и вы внезапно становитесь уязвимыми. Поскольку все SQL-запросы являются строками, здесь не имеет большого значения, приведете ли вы к строке или нет.
Но что, если вы знаете, что вам нужна строка из формы (любой формы), и кто-то печатает целое число? Попробуйте это ..
Сделайте страницу с таким содержанием:
<!DOCTYPE html>
<html>
<head><title></title></head>
<body>
<form method="POST" action="/test.php">
<input type="text" name="testInput">
<input type="submit">
</form>
</body>
</html>
В test.php
просто выкинь $_POST
:
<?php
var_dump($_POST);
Затем введите целое число в поле формы и посмотрите, какой тип PHP выделяет для него. Это вывод, который я получаю:
array (size=1)
'testInput' => string '5.25' (length=4)
Поскольку на самом деле невозможно создать POST, содержащий объекты PHP (сам JSON является не чем иным, как строкой, пока он не будет декодирован), мы действительно беспокоимся только о собственных типах данных. Как вы можете видеть выше, даже не строковый ввод будет преобразован в строковые данные, когда PHP его получит.
Дело не столько в том, откуда поступают данные, будь то из формы или скрипта, а в том, как PHP получает их и делает их доступными для вас. Я могу создать ту же «форму» в виде скрипта, который выполняет запрос cURL и получает тот же результат.
Других решений пока нет …