Други точки, върху които да помислите:
1. Вие сте уязвими към груба силата
Атака с речник ще разбие паролата ви. Тъй като по-голямата част от потребителите имат несигурна парола, това е само въпрос на време. Използвайте captcha или регистрирайте невалидни записи. Или добавете известно забавяне, когато паролата е неправилна.
Както каза полк. Шрапнел, таблицата с дъгата не ви притеснява, защото се използва, когато някой има куп хешове и иска да ги разбие. Солта се използва, за да се получи известна защита срещу маса с дъга, а това не е вашият случай.
2. Изпращате пароли в ясен текст
Ако някой надуши вашето влизане (wifi, например), вие сте обречени. Има някои библиотеки на JavaScript, които могат да криптират всичко с публични ключове. Ако не искате да използвате SSL, криптирайте данните за вход/паролата, изпратете до сървъра, дешифрирайте с помощта на частния ключ и сте в по-голяма безопасност.
3. Помислете за използването на подготвени оператори в MySQLа
Използването на подготвени изрази помага срещу SQL инжектиране, тъй като може безопасно да се изпълнява дори със злонамерено въвеждане:
$dbc = new mysqli("mysql_server_ip", "mysqluser", "mysqlpass", "dbname");
$statement = $db_connection->prepare("SELECT * FROM table WHERE thing='?'");
$statement->bind_param("i", $thing);
$statement->execute();
4. Не разчитайте на валидиране от страна на клиентата
Във вашия формуляр за вход вие разчитате на функция на javascript, която предотвратява функционирането на клавиша Enter. Ами ако деактивирам Javascript? Можете да използвате скрито поле (напр. ), да използвате функцията си, за да предотвратите клавиша Enter, И да използвате функция onSubmit(), за да промените FormIsValid на 1 преди изпращане на формуляра. Във вашия сървър проверете FormIsValid.
5. Уязвими сте от отвличане на сесията
Вашата сесия се записва в бисквитка, по подразбиране с име PHPSESSID. Ако нападателят може да получи тази бисквитка, той може да я изпрати на вашия сървър и да открадне сесията ви. За да го предотвратите, можете да запишете потребителския IP адрес и потребителския агент в сесията и да сравните стойността, получена от сесията при всяка заявка. Ако стойностите не съвпадат, IP адресът на потребителя може да се е променил или сесията може да е била отвлечена.
6. Може да сте уязвими от фиксиране на сесията
Както беше посочено по-горе, ако някой убеди вашия администратор да получи достъп до някакъв сайт и този сайт изпрати заявка до вашия сайт с PHPSESSID в заявката, вашият сайт ще създаде сесията, ще обработи данните за вход/паролата и ще заяви, че идентификационните данни са грешни . Досега не е зле.
По-късно вашият администратор влиза във вашия портал, сесията вече съществува, входът и паролата съвпадат и сесията е АКТУАЛИЗИРАНА. Променливата валидна сега е 1.
Веднага след като променливата се актуализира, нападателят има пълен достъп до вашия портал, тъй като той знае PHPSESSID, вашият сайт не предотвратява отвличането на сесия или фиксирането на сесията.
За да избегнете фиксиране на сесия и отвличане, вижте #5.