Javierova odpověď s odkazem na owasp je dobrý začátek.
Existuje několik dalších věcí, které můžete udělat:
-
Pokud jde o útoky SQL injection, můžete napsat funkci, která odstraní běžné příkazy SQL ze vstupu, jako je „DROP“ nebo „DELETE * WHERE“, takto:
*$sqlarray =array( " DROP ","nebo 1=1","union select","SELECT * FROM","select host","create table","FROM users","users WHERE");*
Poté napište funkci, která zkontroluje váš vstup proti tomuto poli. Ujistěte se, že žádná z věcí uvnitř $sqlarray nebude běžným vstupem od vašich uživatelů. (Nezapomeňte na to použít strtolower, díky lou).
-
Nejsem si jistý, zda memcache funguje s PHP 4, ale můžete zavést určitou ochranu proti spamu pomocí memcache tím, že povolíte pouze určitý vzdálený IP přístup ke stránce process.php X tolikrát za Y časové období.
-
Privilegia jsou důležitá. Pokud potřebujete pouze oprávnění pro vkládání (řekněme zpracování objednávky), měli byste se přihlásit do databáze na stránce procesu objednávky s uživatelem, který má pouze oprávnění pro vkládání a možná výběr. To znamená, že i když vložení SQL prošlo, mohli by provádět pouze dotazy INSERT / SELECT a nikoli mazat nebo restrukturalizovat.
-
Důležité soubory pro zpracování php vložte do adresáře, jako je /include. Poté všem IP adresám zakažte přístup k tomuto adresáři /include.
-
Vložte osolený MD5 s uživatelským agentem + remoteip + váš salt do uživatelské relace a nechte jej ověřit při každém načtení stránky, že v jeho cookie je správný MD5.
-
Zakázat určitá záhlaví (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ). Zakázat hlavičky PUT (pokud nepotřebujete nahrávání souborů)/TRACE/CONNECT/DELETE.