PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Đoạn mã sau đây CREATE FUNCTION là một chuỗi ngụ ý điều gì?

PostgreSQL có khả năng mở rộng cao và ví dụ như bạn có thể xác định ngôn ngữ thủ tục của riêng mình để viết các hàm.

PostgreSQL không biết gì về ngôn ngữ ngoại trừ việc nó phải gọi một trình xử lý ngôn ngữ nhất định để thực thi chức năng.

Cách được chọn để triển khai điều này là đơn giản hóa việc chuyển mã dưới dạng một chuỗi.

Đây chỉ là một chi tiết triển khai và không làm cho các hàm PostgreSQL dễ bị tấn công bởi SQL injection hơn các RDBMS khác.

Có một số cấp độ mà bạn phải tự bảo vệ mình khỏi bị tiêm:

  • Các đối số của hàm:Tại đây, bạn nên chọn các kiểu dữ liệu không phải là chuỗi bất cứ khi nào có thể.

  • Các câu lệnh SQL trong hàm:Ở đây bạn nên tránh SQL động bất cứ khi nào có thể và nếu bạn phải sử dụng SQL động, bạn nên chèn các biến bằng cách sử dụng %L mẫu của định dạng format chức năng.

Một lần nữa, điều này cũng tương tự nếu các thân hàm được chỉ định dưới dạng chuỗi hay không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn được tham số hóa:Kiểm tra xem trường có nằm trong mảng giá trị trong câu lệnh SELECT hay không

  2. Thay vì LIKE và ~, tại sao chỉ SIMILAR TO hoạt động khi thực hiện kết hợp regex với các lựa chọn thay thế

  3. 3 Hàm lấy Ngày, Tháng và Năm từ một Ngày trong PostgreSQL

  4. Nhận giá trị cột của hàng trước đó trong postgres không thể sử dụng chức năng cửa sổ trong CẬP NHẬT

  5. Làm cách nào để có được kế hoạch thực thi cho một truy vấn đang chạy trong postgresql?