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

bind_param() е необходим само за въведени от потребителя стойности или всички?

Технически не сте изложени на риск, ако не подготвите данни, които не идват от въвеждане на потребителя. Въпреки това силно се препоръчва да го направите поради няколко причини:

  1. Ако забравите да подготвите някъде въведени от потребителя данни, има вероятност този потребител да инжектира нещо различно в ред с данни, което не сте очаквали някога да бъде въведен от потребителя.
  2. Добра практика е да повторите това, което правите, за да запазите сървъра си защитен. Ако започнете да ги смесвате, е много по-вероятно да забравите да подготвите данни там, където всъщност е необходимо за това.
  3. Подготовката на вашите данни не е само за предотвратяване на SQL инжектиране от нападатели. Това също така ще предотврати някои проблеми с базата данни, в случай че случайно създадете грешка в кода си. Например:

Някъде във вашия код имате лог система, която добавя регистър на грешки към вашата база данни. Низът ще бъде:


Този низ е генериран от вашия скрипт. Затова не го приготвяте. И все пак кавичките в този низ ще доведат до грешки във вашата база данни, които биха могли да бъдат предотвратени, ако все пак сте я подготвили.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. java.sql.SQLException:Не е намерен подходящ драйвер за тест на localhost

  2. Заявката за MySQL Insert не работи с клауза WHERE

  3. Получаване на процент от Count(*) към броя на всички елементи в GROUP BY

  4. JSON_VALUE() в MySQL

  5. H2 актуализация с присъединяване