Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản soi kèo bóng đá truoctran được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
Tài liệu này dành cho phiên bản soi kèo bóng đá truoctran được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

42.5. Đáng soi kèo bóng đá truoctran đáng tin cậy PL/perl

Thông thường, soi kèo bóng đá truoctran đượ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 bị vô hiệu hóa để bảo mật. Nói chung, các hoạt động bị hạn chế là những hoạt động tương tác với môi trường. Điều này bao gồm các hoạt động xử lý tệp,Yêu cầusử dụng(cho các mô -đun bên ngoài). soi kèo bóng đá truoctran 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 các quyền của quy trình máy chủ, như một hàm C có thể làm. Do đó, bất kỳ người dùng cơ sở dữ liệu soi kèo bóng đá truoctran đặc quyền nào cũng có thể được phép sử dụng ngôn ngữ này.

Đây là một ví dụ về chức năng sẽ soi kèo bóng đá truoctran hoạt động vì các hoạt động hệ thống tệp soi kèo bóng đá truoctran đượ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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran 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 vì việc sử dụng 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 soi kèo bóng đá truoctran bị hạn chế. Ví dụ, người ta có thể muốn một chức năng Perl gửi thư. Để xử lý các trường hợp này, PL/Perl cũng có thể được cài đặt dưới dạng"Không soi kèo bóng đá truoctran"Ngôn ngữ (thường được gọi làPL/Perlu). Trong trường hợp này, ngôn ngữ Perl đầy đủ có sẵn. Khi cài đặt ngôn ngữ, tên ngôn ngữPlperluSẽ chọn biến thể PL/Perl không soi kèo bóng đá truoctran.

Người viết của APL/PerluHàm phải cẩn thận rằng chức năng không thể được sử dụng để làm 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 làm 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 soi kèo bóng đá truoctran.

Nếu hàm trên được tạo bởi một siêu người dùng bằng ngôn ngữPlperlu, thực thi sẽ thành công.

Theo cách tương tự, các khối mã ẩn danh được viết bằng Perl có thể sử dụng các hoạt động bị hạn chế nếu ngôn ngữ được chỉ định làPlperluthay vìPlperl, nhưng người gọi phải là một siêu người dùng.

Lưu ý:trong khisoi kèo bóng đá truoctranCác chức năng chạy trong một trình thông dịch perl riêng cho mỗi vai trò SQL, tất cảPL/Perlu13372_13485soi kèo bóng đá truoctranchức năng). Điều này cho phépPL/PerluCác chức năng chia sẻ dữ liệu một cách tự do, nhưng soi kèo bóng đá truoctran có giao tiếp nào có thể xảy ra giữasoi kèo bóng đá truoctranPL/Perluchức năng.

Lưu ý:Perl soi kèo bóng đá truoctran 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 bằng các cờ thích hợp, cụ thể làUsemultiplicityhoặcuseithreads. (Usemultiplicityđược ưu tiên trừ khi bạn thực sự cần sử dụng các luồng. Để biết thêm chi tiết, xemperlembedTrang người đàn ông.) Nếusoi kèo bóng đá truoctran14284_14458PL/Perluchức năng hoặcsoi kèo bóng đá truoctranCác chức năng được gọi bởi cùng một vai trò SQL.