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

Заявка за инжектиране на MySQL

Би било, освен ако не включите единични кавички в публикуваното name , което би ви позволило да излезете от кавичките. Например, публикувайте името като:

' or 1 or '

Клаузата WHERE става:

WHERE id = '' or 1 or '';

Това ще съпостави и ще извлече всички редове в таблицата поради or 1 част. Както можете да видите, той излиза от кавичките, за да инжектира малко SQL, след което се връща обратно в кавичките, за да направи заявката валидна.

Не, но ако е изпълнено с mysqli_multi_query тогава да, можете да добавите множество заявки към края.

По принцип да, но подготвено изявление би било по-добре. Използвайки екраниране, WHERE клауза ще стане (използвайки моя пример по-горе):

WHERE id = '\' or 1 or \'';

Това вече не е уязвимо, тъй като кавичките не могат да бъдат разбити и ще съответстват на редове само ако name буквално съвпада с ' or 1 or ' което очевидно е малко вероятно.



  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 като база данни по подразбиране в Rails 3?

  2. SQL помощ | Списъкът за избор за оператора INSERT съдържа по-малко елементи от списъка за вмъкване

  3. Разлика в датата в MySQL за изчисляване на възрастта

  4. Редове на заявка, за които не съществува ключ за метаданни

  5. Spring Boot JPA:как да направите заявка за JSON колона в таблица