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

Как да напиша параметризирана sql заявка за предотвратяване на SQL инжектиране?

Не съм потребител на Knex.js, но като гледам документите, изглежда, че използването на синтаксиса на JavaScript обект от Knex за дефиниране на предикати е начинът, по който постига параметризация.

Въпреки това, тъй като използвате вградени функции, трябва да използвате whereRaw .

Разглеждане на документите ( http://knexjs.org/#Builder-whereRaw ) и ( http://knexjs.org/#Raw-Bindings ) Мисля, че искате да направите това:

.whereRaw('question LIKE :term OR note LIKE :term OR user_name LIKE :term', { term: '%' + term + '%' ] } )

Knex няма orWhereRaw , така че трябва да използвате дългата версия, ако искате логически да разделите предикатите:

term = '%' + term + '%';

.orWhere( knex.raw( 'question  LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'note      LIKE ?', [ term ] ) )
.orWhere( knex.raw( 'user_name LIKE ?', [ term ] ) )

Забележете ? е за позиционни параметри и :term е за именувани параметри.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли начин за предаване на параметри към необработена заявка на postgres в релси?

  2. Проблем при компилиране на програма с pqxx

  3. Заявка за активен запис за присъединяване на таблица към sql към релси

  4. защо не мога да видя размера на моята схема

  5. партиден файл за съхраняване на изхода от psql заявката в променлива