sql >> Databáze >  >> RDS >> Mysql

Otázky zabezpečení dynamických webových stránek (PHP+MySQL)

Další body k zamyšlení:

1. Jste zranitelní vůči bruteforce

Slovníkový útok by prolomil vaše heslo. Protože naprostá většina uživatelů má heslo nezabezpečené, je to jen otázka času. Použijte captcha nebo zaznamenejte neplatné položky. Nebo přidejte nějakou prodlevu, když je heslo nesprávné.

Jak řekl plukovník Shrapnel, duhová tabulka vás nezajímá, protože se používají, když má někdo spoustu hashů a chce je rozlousknout. Sůl se používá k získání určité ochrany před duhovým stolem, a to není váš případ.

2. Hesla posíláte jako prostý text

Pokud někdo přičichne k vašemu přihlášení (např. wifi), jste odsouzeni k záhubě. Existuje několik knihoven javascript, které mohou šifrovat cokoli pomocí veřejných klíčů. Pokud nechcete používat SSL, zašifrujte přihlašovací jméno/heslo, odešlete na server, dešifrujte pomocí soukromého klíče a jste ve větším bezpečí.

3. Zvažte použití připravených příkazů na MySQLu

Použití připravených příkazů pomáhá proti injektáži SQL, protože může bezpečně běžet i se škodlivým vstupem:

$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. Nespoléhejte na ověřování na straně klienta

Ve vašem přihlašovacím formuláři se spoléháte na funkci javascriptu, která brání funkci klávesy Enter. Co když zakážu Javascript? Můžete použít skryté pole (např. ), pomocí své funkce zabránit klávese Enter A pomocí funkce onSubmit() změnit FormIsValid na 1 před odeslání formuláře. Na svém serveru ověřte FormIsValid.

5. Jste zranitelní vůči únosu relace

Vaše relace se uloží do souboru cookie, ve výchozím nastavení s názvem PHPSESSID. Pokud by útočník mohl získat tento soubor cookie, mohl by jej odeslat na váš server a ukrást vaši relaci. Abyste tomu zabránili, můžete uložit IP adresu uživatele a uživatelského agenta v relaci a porovnat hodnotu přijatou z relace při každém požadavku. Pokud se hodnoty neshodují, mohla se změnit IP adresa uživatele nebo mohla být relace unesena.

6. Můžete být zranitelní vůči fixaci relace

Jak je uvedeno výše, pokud někdo přesvědčí vašeho administrátora, aby vstoupil na nějaký web, a tento web odešle na váš web požadavek s PHPSESSID na požadavku, váš web vytvoří relaci, zpracuje přihlašovací jméno/heslo a uvede, že přihlašovací údaje jsou chybné. . Až do teď to není špatné.

Později se váš administrátor přihlásí do vašeho portálu, relace již existuje, přihlašovací jméno a heslo se shodují a relace je AKTUALIZOVÁNA. Proměnná platná nyní je 1.

Jakmile je proměnná aktualizována, útočník má plný přístup k vašemu portálu, protože zná PHPSESSID, váš web nebrání únosu relace ani fixaci relace.

Chcete-li se vyhnout fixaci relace a únosu, viz #5.



  1. Instalační program MySQL se zasekl při spouštění služby

  2. Architektura Oracle E-Business Suite ve verzi 12.2

  3. Připravené prohlášení Chyba SQL

  4. vyberte ze dvou tabulek, kde propojený sloupec může mít hodnotu null