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

Използване на параметри за mysql_query

Първо, това, за което става дума, се нарича SQL-Injection . По същество това е просто възможността за промяна на заявки към базата данни чрез въвеждане от потребителя.

Нека разгледаме пример:

Запитване:

SELECT temp1 FROM temp WHERE temp2 = 'VAR1';

Сега ще присвоим VAR1 стойността на:'; DROP TABLE *; -- И ще получим:

SELECT temp1 FROM temp WHERE temp2 = ''; DROP TABLE *; --';

С mysql_real_escape_string ще изглежда така:

SELECT temp1 FROM temp WHERE temp2 = '\'; DROP TABLE *; --'

mysql_real_escape_string 'обезопасява' низ за използване в рамките на заявка.

Но в крайна сметка, трябва да спрете да използвате mysql_* като цяло . Те са отхвърлени и се считат за несигурни, когато става въпрос за предотвратяване на SQL инжектиране или други средства за овладяване на заявките.

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

За PHP има две разширения, които са предназначени да затварят целия mysql_* отворен:

И пак го казвам:Моля, спрете да използвате mysql_* !



  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 LIMIT 1 при запитване към индексирано/уникално поле?

  2. трябва да върне два набора данни с две различни клаузи where

  3. Как да оптимизирам търсенето по дата и час в Mysql?

  4. Как да добавя общ ред в MySQL

  5. сортирайте сбора в група по