Отговорът на Хавиер, който съдържа връзката owasp, е добро начало.
Има още няколко неща, които можете да направите повече:
-
По отношение на атаките с инжектиране на SQL, можете да напишете функция, която ще премахне често срещаните SQL изрази от входа като „ DROP “ или „DELETE * WHERE“, като това:
*$sqlarray =array( " DROP ","или 1=1","union select","SELECT * FROM","select host","create table","FROM users","users WHERE");*
След това напишете функцията, която ще проверява вашия вход спрямо този масив. Уверете се, че някои от нещата в $sqlarray няма да бъдат често срещани данни от вашите потребители. (Не забравяйте да използвате strtolower за това, благодаря lou).
-
Не съм сигурен дали memcache работи с PHP 4, но можете да поставите известна защита срещу спам с memcache, като разрешите само определен отдалечен IP достъп до страницата process.php X брой пъти в период от време.
-
Привилегиите са важни. Ако имате нужда само от привилегии за вмъкване (да речем, обработка на поръчки), тогава трябва да влезете в базата данни на страницата за обработка на поръчката с потребител, който има само привилегии за вмъкване и може би изберете. Това означава, че дори ако SQL инжекция се осъществи, те могат да изпълняват само заявки INSERT / SELECT, а не да изтриват или преструктурират.
-
Поставете важни файлове за обработка на php в директория като /include. След това забранете достъпа на всички IP адреси до тази директория /include.
-
Поставете осоления MD5 с потребителския агент + remoteip + вашата сол в сесията на потребителя и го накарайте да проверява при всяко зареждане на страница дали правилният MD5 е в тяхната бисквитка.
-
Забранете определени заглавки (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ) . Забранете заглавките PUT (ако не се нуждаете от качване на файлове)/TRACE/CONNECT/DELETE.