Postgresql 8.2.23 Tài liệu | ||||
---|---|---|---|---|
Prev | Backward nhanh | Chương 39. kèo chấp bóng đá hôm nay - Ngôn ngữ thủ tục Perl | Chuyển tiếp nhanh | Tiếp theo |
Thông thường, kèo chấp bóng đá hôm nay được cài đặt dưới dạng"Trusted"Ngôn ngữ lập trình có tênPlperl. Trong thiết lập này, một số hoạt động perl nhất định là vô hiệu hóa để bảo vệ bảo mật. Nói chung, các hoạt động được hạn chế là những người tương tác với môi trường. Cái này Bao gồm các hoạt động xử lý tệp,Yêu cầuvàSử dụng(cho các mô -đun bên ngoài). kèo chấp bóng đá hôm nay có cách nào để truy cập vào bên trong của quy trình máy chủ cơ sở dữ liệu hoặc để có được quyền truy cập cấp hệ điều hành với Quyền của quy trình máy chủ, như một hàm C có thể làm. Như vậy, Bất kỳ người dùng cơ sở dữ liệu kèo chấp bóng đá hôm nay đặc quyền nào cũng có thể được phép sử dụng điều này ngôn ngữ.
Đây là một ví dụ về một chức năng sẽ kèo chấp bóng đá hôm nay hoạt động vì Hoạt động hệ thống tệp kèo chấp bóng đá hôm nay được phép vì lý do bảo mật:
Tạo hàm badfunc () trả về số nguyên dưới dạng $$ $ tmpfile của tôi = "/tmp/badfile"; Mở $ fh của tôi, '', $ tmpfile hoặc elog (lỗi, qq kèo chấp bóng đá hôm nay thể mở tệp "$ tmpfile": $!); In $ fh "Kiểm tra viết vào một tệp \ n"; đóng $ fh hoặc elog (lỗi, qq kèo chấp bóng đá hôm nay thể đóng tệp "$ tmpfile": $!); trả lại 1; $$ ngôn ngữ plperl;
Việc tạo chức năng này sẽ thất bại khi sử dụng một Hoạt động bị cấm sẽ bị bắt bởi trình xác thực.
Đôi khi mong muốn viết các chức năng perl kèo chấp bóng đá hôm nay hạn chế. Ví dụ: người ta có thể muốn một hàm perl Gửi thư. Để xử lý những trường hợp này, PL/Perl cũng có thể được cài đặt như một"Không kèo chấp bóng đá hôm nay"Ngôn ngữ (thường là gọi điệnPL/Perlu). Trong trường hợp này toàn bộ Perl Ngôn ngữ có sẵn. NếucreatelangChương trình được sử dụng để cài đặt ngôn ngữ, tên ngôn ngữPlperluSẽ chọn cái không đáng kèo chấp bóng đá hôm nay Biến thể PL/perl.
Người viết của APL/Perluchức năng phải cẩn thận rằng chức năng không thể được sử dụng bất cứ điều gì không mong muốn, vì nó sẽ có thể làm bất cứ điều gì có thể được thực hiện bởi người dùng đăng nhập với tư cách là quản trị viên cơ sở dữ liệu. Lưu ý rằng hệ thống cơ sở dữ liệu chỉ cho phép các siêu người dùng cơ sở dữ liệu Tạo các hàm trong các ngôn ngữ không đáng kèo chấp bóng đá hôm nay.
Nếu hàm trên được tạo bởi một siêu người dùng bằng cách sử dụng ngôn ngữPlperlu, thực thi sẽ thành công.
Lưu ý:trong khikèo chấp bóng đá hôm nayCác chức năng chạy trong một Perl riêng biệt thông dịch cho từng vai trò SQL, tất cảPL/PerluCác chức năng được thực thi trong một phiên chạy trong một trình thông dịch PERL duy nhất (kèo chấp bóng đá hôm nay phải là bất kỳ những cái được sử dụng chokèo chấp bóng đá hôm naychức năng). Điều này cho phépPL/Perluchức năng chia sẻ dữ liệu một cách tự do, Nhưng kèo chấp bóng đá hôm nay có giao tiếp nào có thể xảy ra giữakèo chấp bóng đá hôm nayvàPL/Perluchức năng.
Lưu ý:Perl kèo chấp bóng đá hôm nay thể hỗ trợ nhiều phiên dịch viên trong một quy trình trừ khi nó được xây dựng với cờ, cụ thể làUsemultiplicityhoặcuseithreads. (Usemultiplicityđược ưu tiên trừ khi bạn thực sự cần sử dụng chủ đề. Để biết thêm chi tiết, xemperlembedNgười đàn ông trang.) nếukèo chấp bóng đá hôm nayđược sử dụng với một bản sao của Perl kèo chấp bóng đá hôm nay được xây dựng theo cách này, thì đó là chỉ có thể có một thông dịch viên perl mỗi phiên và Vì vậy, bất kỳ một phiên nào chỉ có thể thực thiPL/Perluchức năng hoặckèo chấp bóng đá hôm nayCác chức năng được gọi bởi cùng một vai trò SQL.