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 không đượ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
Tài liệu này dành cho phiên bản không đượ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ế.

34.4. kèo chấp bóng đá hôm nay

Do viết lại các truy vấn củaPostgreSQLHệ thống kèo chấp bóng đá hôm nay, các bảng/chế độ xem khác so với những người được sử dụng trong truy vấn ban đầu được truy cập. Khi cập nhật Các kèo chấp bóng đá hôm nay được sử dụng, điều này có thể bao gồm quyền truy cập ghi vào các bảng.

Viết lại các kèo chấp bóng đá hôm nay không có chủ sở hữu riêng. Chủ sở hữu của một quan hệ (bảng hoặc chế độ xem) tự động là chủ sở hữu của Viết lại các kèo chấp bóng đá hôm nay được xác định cho nó. ThePostgreSQLHệ thống kèo chấp bóng đá hôm nay thay đổi hành vi của hệ thống điều khiển truy cập mặc định. Quan hệ được sử dụng do đối với các kèo chấp bóng đá hôm nay được kiểm tra đối với các đặc quyền của chủ sở hữu kèo chấp bóng đá hôm nay, Không phải người dùng gọi kèo chấp bóng đá hôm nay. Điều này có nghĩa là người dùng chỉ cần các đặc quyền cần thiết cho các bảng/lượt xem mà anh ta đặt tên rõ ràng trong các truy vấn của anh ấy.

Ví dụ: Người dùng có danh sách các số điện thoại trong đó một số họ là riêng tư, những người khác được thư ký của văn phòng. Anh ấy có thể xây dựng những điều sau:

Tạo bảng điện thoại_data (văn bản người, văn bản điện thoại, boolean riêng);
Tạo View Phone_Number là
    Chọn người, trường hợp khi không riêng tư thì điện thoại kết thúc như điện thoại
    Từ điện thoại_data;
Cấp chọn trên Phone_Number cho Thư ký;

Không ai ngoại trừ anh ta (và siêu nhân cơ sở dữ liệu) có thể truy cậpPhone_dataBảng. Nhưng vìGrant, Thư ký có thể chạyChọntrênPhone_numberXem. Hệ thống kèo chấp bóng đá hôm nay sẽ viết lại TheChọntừPhone_numberthành AChọntừPhone_data. Vì người dùng là chủ sở hữu củaPhone_numberVà do đó, chủ sở hữu của kèo chấp bóng đá hôm nay, Truy cập đọc vàoPhone_Databây giờ là Kiểm tra chống lại các đặc kèo chấp bóng đá hôm nayền của anh ta và truy vấn được cho phép. Các Kiểm tra truy cậpPhone_numbercũng là đã thực hiện, nhưng điều này được thực hiện đối với người dùng gọi, vì vậy không có ai Nhưng người dùng và thư ký có thể sử dụng nó.

Các đặc quyền được kiểm tra kèo chấp bóng đá hôm nay theo kèo chấp bóng đá hôm nay. Vì vậy, thư ký là Bây giờ người duy nhất có thể nhìn thấy số điện thoại công cộng. Nhưng Thư ký có thể thiết lập một chế độ xem khác và cấp quyền truy cập cho điều đó cho công chúng. Sau đó, bất cứ ai cũng có thể nhìn thấyPhone_numberDữ liệu thông qua quan điểm của Bộ trưởng. Điều mà thư ký không thể làm là tạo một chế độ xem trực tiếp Truy cậpPhone_Data. (Thực sự anh ấy có thể, Nhưng nó sẽ không hoạt động vì mọi kèo chấp bóng đá hôm nayền truy cập sẽ bị từ chối trong thời gian Kiểm tra kèo chấp bóng đá hôm nayền.) Và ngay khi người dùng sẽ nhận thấy, rằng Thư ký đã mở của anh ấyPhone_numberXem, Anh ta có thể thu hồi kèo chấp bóng đá hôm nayền truy cập của mình. Ngay lập tức, bất kỳ kèo chấp bóng đá hôm nayền truy cập nào vào Quan điểm của thư ký sẽ thất bại.

Người ta có thể nghĩ rằng kiểm tra theo kèo chấp bóng đá hôm nay này là một bảo mật Lỗ, nhưng thực tế nó không phải là. Nhưng nếu nó không hoạt động theo cách này, thì Thư ký có thể thiết lập một bảng có cùng các cột nhưPhone_numbervà sao chép dữ liệu vào đó một lần mỗi ngày. Sau đó, đó là dữ liệu của riêng anh ấy và anh ấy có thể cấp kèo chấp bóng đá hôm nayền truy cập vào Mọi người anh ấy muốn. MỘTGrantlệnh có nghĩa,"Tôi tin tưởng bạn". Nếu ai đó bạn Niềm tin làm điều ở trên, đã đến lúc phải suy nghĩ về nó và sau đó sử dụngthu hồi.

Lưu ý rằng trong khi các chế độ xem có thể được sử dụng để ẩn nội dung của một số cột sử dụng kỹ thuật được hiển thị ở trên, chúng không thể Được sử dụng để che giấu đáng tin cậy dữ liệu trong các hàng không nhìn thấy. Ví dụ, Chế độ xem sau là không an toàn:

Tạo View Phone_Number AS
    Chọn người, điện thoại từ điện thoại_data nơi điện thoại không thích '412%';

Chế độ xem này có vẻ an toàn, vì hệ thống kèo chấp bóng đá hôm nay sẽ Viết lại bất kỳChọntừPhone_numberthành AChọntừPhone_datavà thêm trình độ chỉ các mục nhập trong đóĐiện thoạiKhông bắt đầu với 412 là muốn. Nhưng nếu người dùng có thể tạo chức năng của riêng mình, không khó Để thuyết phục người lập kế hoạch thực hiện chức năng do người dùng xác định Trướckhông thíchBiểu thức.

Tạo chức năng Tricky (văn bản, văn bản) trả về Bool dưới dạng $$
BẮT ĐẦU
    Nâng cao thông báo ' % = %', $ 1, $ 2;
    Trả lại đúng;
KẾT THÚC
$$ Ngôn ngữ plpgsql có giá 0,0000000000000000000001;
Chọn * Từ Phone_Number nơi khó (người, điện thoại);

mỗi người và số điện thoại trongPhone_dataBảng sẽ được in dưới dạngThông báo, vì người lập kế hoạch sẽ chọn thực thi không tốn kémTrickyHàm trước khi đắt hơnkhông thích. Ngay cả khi người dùng bị ngăn không xác định các chức năng mới, Các chức năng tích hợp có thể được sử dụng trong các cuộc tấn công tương tự. (Ví dụ, Các chức năng đúc bao gồm các đầu kèo chấp bóng đá hôm nayo của chúng trong các thông báo lỗi mà họ sản xuất.)

Cân nhắc tương tự áp dụng cho các kèo chấp bóng đá hôm nay cập nhật. Trong các ví dụ của phần trước, chủ sở hữu của các bảng trong ví dụ cơ sở dữ liệu có thể cấp các đặc quyềnChọn, Chèn, Cập nhậtXóatrênShoelaceXem cho người khác, nhưng chỉChọntrênShoelace_log. Hành động kèo chấp bóng đá hôm nay để viết Các mục nhập nhật ký vẫn sẽ được thực thi thành công và cái khác Người dùng có thể thấy các mục nhật ký. Nhưng anh ấy không thể tạo ra giả mạo Các mục nhập, anh ta cũng không thể thao túng hoặc loại bỏ các mục hiện tại. Trong này trường hợp, không có khả năng lật đổ các kèo chấp bóng đá hôm nay bởi thuyết phục người lập kế hoạch thay đổi thứ tự hoạt động, bởi vì kèo chấp bóng đá hôm nay duy nhất tham khảoShoelace_loglà một người không đủ tiêu chuẩnChèn. Điều này có thể không đúng trong phức tạp hơn kịch bản.