PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Apa yang disiratkan oleh kode berikut CREATE FUNCTION sebagai string?

PostgreSQL sangat dapat diperluas, dan misalnya Anda dapat menentukan bahasa prosedural Anda sendiri untuk menulis fungsi.

PostgreSQL tidak tahu apa-apa tentang bahasa tersebut kecuali bahwa ia harus memanggil penangan bahasa tertentu untuk menjalankan fungsi.

Cara yang dipilih untuk mengimplementasikannya adalah dengan menyederhanakan pass kode sebagai string.

Ini hanyalah detail implementasi dan tidak membuat fungsi PostgreSQL lebih atau kurang rentan terhadap injeksi SQL dibandingkan RDBMS lainnya.

Ada beberapa level di mana Anda harus mempertahankan diri dari injeksi:

  • Argumen fungsi:Di ​​sini Anda harus memilih tipe data non-string bila memungkinkan.

  • Pernyataan SQL dalam fungsi:Di ​​sini Anda harus menghindari SQL dinamis bila memungkinkan, dan jika Anda harus menggunakan SQL dinamis, Anda harus memasukkan variabel menggunakan %L pola format fungsi.

Sekali lagi, ini sama jika badan fungsi ditentukan sebagai string atau tidak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menambahkan X jam - @Query - Spring Data JPA

  2. Kesalahan saat menggunakan perintah salin di Postgres (KESALAHAN:sintaks input tidak valid untuk tanggal tipe:)

  3. Rails 3 mengabaikan pengecualian batasan unik Postgres

  4. Menyinkronkan 2 basis data yang gagal dilakukan

  5. Bagaimana cara menanyakan postgres pada params opsional?