sql >> Databasteknik >  >> RDS >> Mysql

PHP/SQL-databas som frågar efter god praxis och säkerhet

Javiers svar som har owasp-länken är en bra början.

Det finns några fler saker du kan göra mer:

  1. Angående SQL-injektionsattacker kan du skriva en funktion som tar bort vanliga SQL-satser från indata som " DROP " eller "DELETE * WHERE", så här:

    *$sqlarray =array( " DROP ","eller 1=1","union select","SELECT * FROM","välj värd","skapa tabell","FRÅN användare","användare WHERE");*

    Skriv sedan funktionen som kontrollerar din inmatning mot denna array. Se till att något av sakerna i $sqlarray inte kommer att vara vanliga indata från dina användare. (Glöm inte att använda strtolower på detta, tack lou).

  2. Jag är inte säker på om memcache fungerar med PHP 4 men du kan införa ett visst spamskydd med memcache genom att endast tillåta en viss fjärr-IP-åtkomst till sidan process.php X antal gånger under Y-perioden.

  3. Privilegier är viktiga. Om du bara behöver infoga privilegier (säg orderhantering) så ska du logga in i databasen på orderprocesssidan med en användare som bara har infoga och kanske välja privilegier. Detta innebär att även om en SQL-injektion gick igenom, kunde de bara utföra INSERT/SELECT-frågor och inte ta bort eller omstrukturera.

  4. Lägg viktiga php-bearbetningsfiler i en katalog som /include. Tillåt sedan alla IP-adresser åtkomst till den /include-katalogen.

  5. Sätt en saltad MD5 med användarens agent + remoteip + ditt salt i användarens session och låt den verifiera vid varje sidladdning att rätt MD5 finns i deras cookie.

  6. Tillåt inte vissa rubriker (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ) . Tillåt inte PUT(Om du inte behöver filuppladdningar)/TRACE/CONNECT/DELETE-rubriker.



  1. Hur frigör man eventuella Postgres radlås?

  2. postgres standardtidszon

  3. MySQL återställningsfråga

  4. Hämta en bild lagrad som BLOB på en MYSQL DB