Я разработал страницу входа в систему , чтобы пользователь мог войти в систему 1 - с именем пользователя и паролем1 или 2 - с помощью просто файла (пароль2) . Моя таблица имеет три столбца под названием username (уникальный индекс), пароль1 и пароль2 (уникальный индекс).
method 1 ( login with username and password1 ) :< /code>
$ username = $ _post ['username'];
$ password1 = password_hash ($ _ post ['password1'], password_default) < /code>;
method 2 ( login with a file ) :< /code>
$ password2 = hash ('sha3-512', $ _post ['password2']) < /code>;
В первом методе, потому что пароль (пароль1) < /code> сохраняется с помощью пароля_hash < /code>, мы можем получить к нему допустимо через США и выполнить версию. Но во втором методе невозможно сохранить пароль (пароль2) , используя функцию Secure Password_hash , а затем получить к нему доступ без имени пользователя (, поскольку у нас есть только файл ). Поэтому я должен сохранить его, используя функцию хэш , чтобы иметь возможность получить к ней доступ. Я полагаю, что второй метод гораздо более безопасен от атак, однако, Мой основной вопрос: я все еще хочу, чтобы пароль (пароль2) < /code> во втором методе хранится более надежно и все еще доступен через запрос? Имя пользователя и пароль (пароль1) , у них есть опция на своей панели, чтобы зарегистрировать файл в качестве файла входа. From then on, they can log into their account using only this file, without needing a username or password (password1).
2 - The password (password2) is extracted from this file on the client side using the following code and then stored :
document.getElementById("file").addEventListener("change", function (event) {
const filereader = new FileReader();
filereader.onload = function () {
var filedata = filereader.result.split(',')[1];
const datalength = filedata.length;
filedata = filedata.slice(Math.round(((datalength * 2) / 9)) - 100, Math.round(((datalength * 2) / 9)) + 100) + filedata.slice(Math.round(((datalength * 5) / 9)) - 100, Math.round(((datalength * 5) / 9)) + 100) + filedata.slice(Math.round(((datalength * 8) / 9)) - 100, Math.round(((datalength * 8) / 9)) + 100);
if (/^[a-zA-Z0-9+=/]*$/.test(filedata)) {
console.log(filedata);
//Sending filedata (password2) via Ajax
}
};
filereader.readAsDataURL(event.target.files[0]);
});
< /code>
< /div>
< /div>
< /p>
if (isset($_POST['register']) && !empty($_POST['password2']) && preg_match('/^[a-zA-Z0-9+=\/]*$/', $_POST['password2']) && mb_strlen($_POST['password2'], 'UTF-8') prepare("SELECT username FROM table WHERE password2=?");
$select->execute([hash('sha3-512', $_POST['password2'])]);
$select = $select->fetch(PDO::FETCH_ASSOC);
if ($select === false) {
$update = $conn->prepare("UPDATE table SET password2=? WHERE username=?");
$update->execute([hash('sha3-512', $_POST['password2']), $_POST['username']]);
//...
}
$conn = null;
}
if (isset($_POST['login']) && !empty($_POST['password2']) && preg_match('/^[a-zA-Z0-9+=\/]*$/', $_POST['password2']) && mb_strlen($_POST['password2'], 'UTF-8') prepare("SELECT username FROM table WHERE password2=?");
$select->execute([hash('sha3-512', $_POST['password2'])]);
$select = $select->fetch(PDO::FETCH_ASSOC);
$conn = null;
if ($select !== false) {
//...
}
}
Из -за ограничений скорости в Интернете и слабого подключения, не практично загружать файл 3GB (пользователь может выбрать файл носителя любого размера, если они не делают этот файл общедоступным в Интернете), а затем извлечь пароль (пароль2) на стороне сервера (move_uploaded_file). Поэтому мы выполняем эту операцию на стороне клиента.
Почему второй метод более безопасен:
Второй метод: < /strong>
разрешенные символы: 64 Total → A-Z (26 букв нижних регистра) A-Z (26 averscare Letters) 0-9 (10 цифр) + /(2 специальных символов)
Length: ровно 600).Total Possibilities : 10^1084< /code>
Первый метод: < /strong>
username:
разрешенные символы: 36 Total → A-z (26 букв) + 0-9 (10 цифр)
длина: 70 до 32 символов
password:
. A-Z (26 прописных букв) 0-9 (10 цифр)!@#$%^&* (8 специальных символов)
длина: ровно 32 символа
Total Possibilities : 2.33 * 10^108< /code>
10^1084 / 2.33 * 10^108 = 10^976< /code>
This means : There is no problem with extracting the password on the client side, or should we be worried that the password (password2) column has a unique index.
Second Edit (thanks a lot to adyson) :
Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-a-file
Улучшение безопасности при входе в систему с помощью файла [закрыто] ⇐ MySql
Форум по Mysql
1757741150
Anonymous
Я разработал страницу входа в систему , чтобы пользователь мог войти в систему 1 - с именем пользователя и паролем1 или 2 - с помощью просто файла (пароль2) . Моя таблица имеет три столбца под названием username (уникальный индекс), пароль1 и пароль2 (уникальный индекс).
method 1 ( login with username and password1 ) :< /code>
$ username = $ _post ['username'];
$ password1 = password_hash ($ _ post ['password1'], password_default) < /code>;
method 2 ( login with a file ) :< /code>
$ password2 = hash ('sha3-512', $ _post ['password2']) < /code>;
В первом методе, потому что пароль (пароль1) < /code> сохраняется с помощью пароля_hash < /code>, мы можем получить к нему допустимо через США и выполнить версию. Но во втором методе невозможно сохранить пароль (пароль2) , используя функцию Secure Password_hash , а затем получить к нему доступ без имени пользователя ([b], поскольку у нас есть только файл [/b]). Поэтому я должен сохранить его, используя функцию хэш , чтобы иметь возможность получить к ней доступ. Я полагаю, что второй метод гораздо более безопасен от атак, однако, [b] Мой основной вопрос: я все еще хочу, чтобы пароль (пароль2) < /code> во втором методе хранится более надежно и все еще доступен через запрос? Имя пользователя и пароль (пароль1) , у них есть опция на своей панели, чтобы зарегистрировать файл в качестве файла входа. From then on, they can log into their account using only this file, without needing a username or password (password1).
2 - The password (password2) is extracted from this file on the client side using the following code and then stored :
document.getElementById("file").addEventListener("change", function (event) {
const filereader = new FileReader();
filereader.onload = function () {
var filedata = filereader.result.split(',')[1];
const datalength = filedata.length;
filedata = filedata.slice(Math.round(((datalength * 2) / 9)) - 100, Math.round(((datalength * 2) / 9)) + 100) + filedata.slice(Math.round(((datalength * 5) / 9)) - 100, Math.round(((datalength * 5) / 9)) + 100) + filedata.slice(Math.round(((datalength * 8) / 9)) - 100, Math.round(((datalength * 8) / 9)) + 100);
if (/^[a-zA-Z0-9+=/]*$/.test(filedata)) {
console.log(filedata);
//Sending filedata (password2) via Ajax
}
};
filereader.readAsDataURL(event.target.files[0]);
});
< /code>
< /div>
< /div>
< /p>
if (isset($_POST['register']) && !empty($_POST['password2']) && preg_match('/^[a-zA-Z0-9+=\/]*$/', $_POST['password2']) && mb_strlen($_POST['password2'], 'UTF-8') prepare("SELECT username FROM table WHERE password2=?");
$select->execute([hash('sha3-512', $_POST['password2'])]);
$select = $select->fetch(PDO::FETCH_ASSOC);
if ($select === false) {
$update = $conn->prepare("UPDATE table SET password2=? WHERE username=?");
$update->execute([hash('sha3-512', $_POST['password2']), $_POST['username']]);
//...
}
$conn = null;
}
if (isset($_POST['login']) && !empty($_POST['password2']) && preg_match('/^[a-zA-Z0-9+=\/]*$/', $_POST['password2']) && mb_strlen($_POST['password2'], 'UTF-8') prepare("SELECT username FROM table WHERE password2=?");
$select->execute([hash('sha3-512', $_POST['password2'])]);
$select = $select->fetch(PDO::FETCH_ASSOC);
$conn = null;
if ($select !== false) {
//...
}
}
Из -за ограничений скорости в Интернете и слабого подключения, не практично загружать файл 3GB (пользователь может выбрать файл носителя любого размера, если они не делают этот файл общедоступным в Интернете), а затем извлечь пароль (пароль2) на стороне сервера (move_uploaded_file). Поэтому мы выполняем эту операцию на стороне клиента.
Почему второй метод более безопасен:
Второй метод: < /strong>
разрешенные символы: 64 Total → A-Z (26 букв нижних регистра) A-Z (26 averscare Letters) 0-9 (10 цифр) + /(2 специальных символов)
Length: ровно 600).Total Possibilities : 10^1084< /code>
Первый метод: < /strong>
username:
разрешенные символы: 36 Total → A-z (26 букв) + 0-9 (10 цифр)
длина: 70 до 32 символов
password:
. A-Z (26 прописных букв) 0-9 (10 цифр)!@#$%^&* (8 специальных символов)
длина: ровно 32 символа
Total Possibilities : 2.33 * 10^108< /code>
10^1084 / 2.33 * 10^108 = 10^976< /code>
This means :[/b] There is no problem with extracting the password on the client side, or should we be worried that the password (password2) column has a unique index.
[b]Second Edit (thanks a lot to adyson) :[/b]
Подробнее здесь: [url]https://stackoverflow.com/questions/79762036/improving-security-at-login-using-a-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия