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
5316_542712 / 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ế.

36.4. tỷ lệ kèo bóng đá tối nay

Do viết lại các truy vấn củaPostgreSQLHệ thống tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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.

10704_10870PostgreSQL10914_11240

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:

11459_11687

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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay, Truy cập đọc vàoPhone_Databây giờ là Kiểm tra chống lại các đặc tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay theo tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nayền truy cập sẽ bị từ chối trong thời gian Kiểm tra tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nayền truy cập của mình. Ngay lập tức, bất kỳ tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối 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 tỷ lệ kèo bóng đá tối nay bởi thuyết phục người lập kế hoạch thay đổi thứ tự hoạt động, bởi vì tỷ lệ kèo bóng đá tối 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.