Mysql
 sql >> база данни >  >> RDS >> Mysql

PHP/SQL база данни за запитване за добри практики и сигурност

Отговорът на Хавиер, който съдържа връзката owasp, е добро начало.

Има още няколко неща, които можете да направите повече:

  1. По отношение на атаките с инжектиране на 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).

  2. Не съм сигурен дали memcache работи с PHP 4, но можете да поставите известна защита срещу спам с memcache, като разрешите само определен отдалечен IP достъп до страницата process.php X брой пъти в период от време.

  3. Привилегиите са важни. Ако имате нужда само от привилегии за вмъкване (да речем, обработка на поръчки), тогава трябва да влезете в базата данни на страницата за обработка на поръчката с потребител, който има само привилегии за вмъкване и може би изберете. Това означава, че дори ако SQL инжекция се осъществи, те могат да изпълняват само заявки INSERT / SELECT, а не да изтриват или преструктурират.

  4. Поставете важни файлове за обработка на php в директория като /include. След това забранете достъпа на всички IP адреси до тази директория /include.

  5. Поставете осоления MD5 с потребителския агент + remoteip + вашата сол в сесията на потребителя и го накарайте да проверява при всяко зареждане на страница дали правилният MD5 е в тяхната бисквитка.

  6. Забранете определени заглавки (http://www.owasp.org/index.php/Testing_for_HTTP_Methods_and_XST ) . Забранете заглавките PUT (ако не се нуждаете от качване на файлове)/TRACE/CONNECT/DELETE.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да търсите точно съвпадаща дума с MySql Query

  2. Mysql Изберете редове, където две колони нямат една и съща стойност

  3. Защо получавам MySQL грешка #1312, когато използвам проста съхранена процедура?

  4. Какво разрешение е необходимо за потребител на MySQL, за да създаде база данни?

  5. Sequelize геопространствена заявка:намерете n най-близки точки до местоположение