2009-12-23 24 views
7

Tôi gặp sự cố xác thực trong CakePHP, khi đặt thông tin xác thực từ trang web bên ngoài, xác thực sẽ hoạt động và sau đó bị mất ngay lập tức, với trang web nhắc thông tin đăng nhập lại.Các tác động của việc sử dụng bảo mật 'thấp' trong CakePHP là gì?

This guy xác định rằng cookie phiên cakephp đang thay đổi. Giải pháp của ông là đặt mức độ an toàn thấp.

Có vẻ như trong môi trường hoặc cao Bánh bảo mật làm một tấm séc đúp cho referer ... nhưng với an ninh thấp hoạt động tốt khi nhấp auth- liên kết bảo vệ khỏi các trang web bên ngoài như hotmail hay yahoo

Giải pháp này cũng làm việc cho tôi, nhưng những gì tôi đang mất bằng cách thiết lập CakePHP để bảo mật 'thấp'?

Trả lời

7

Khi an ninh cao, một session ID mới có được được tạo trên mọi yêu cầu. Thực tế là không thể tạo giải pháp đăng nhập một lần giữa hai ứng dụng bằng cách chia sẻ cookie phiên trong trường hợp này, vì Bánh sẽ liên tục thay đổi ID phiên mà không thông báo cho ứng dụng khác.

Khi bảo mật ở mức trung bình (hoặc cao hơn), session.referer_check được bật.

Khi bảo mật thấp, bạn không có một trong các tính năng ở trên, nhưng nó vẫn an toàn như bất kỳ trang web PHP/CMS trung bình nào ở đó.

+0

Có bất kỳ thứ gì khác bị tắt khi bảo mật được đặt ở mức thấp không? –

+0

Không, ngoài thực tế là thời gian chờ của phiên thay đổi, chỉ có hai tính năng đó bị tắt. Xem tại đây: http://book.cakephp.org/view/44/CakePHP-Core-Configuration-Variables – deizel

0

Tôi tin rằng các nhánh duy nhất của thiết lập này xuống thấp là thời gian phiên được nhân với 300 chứ không phải là 10 hoặc 100 cho cao và trung bình tương ứng và tham khảo phiên kiểm tra xem bạn đang gặp vấn đề với.

Cập nhật: Nếu trước đây bạn đã đặt giá trị này thành cao, bạn cũng sẽ mất thời gian tạo lại phiên id giữa các yêu cầu.

2

Điều chính mà tôi biết là thời gian chờ của phiên, theo nhận xét của ứng dụng/config/core.php, trong đó thời gian chờ phiên của bạn sẽ được nhân với số thấp hơn.

Cuốn sách ủng hộ này lên,

Mức CakePHP an ninh. Thời gian chờ của phiên được xác định trong 'Session.timeout' được nhân với các cài đặt tại đây. giá trị hợp lệ: 'cao' = x 10 'vừa' = x 100 'thấp' = x 300 'cao' và 'vừa' cũng cho phép session.referer_check CakePHP session IDs cũng được tái sinh giữa các yêu cầu nếu 'Security.level' được đặt thành 'cao'.

Ref: http://book.cakephp.org/view/44/CakePHP-Core-Configuration-Variables

Vì vậy, điều khác có vẻ là việc kiểm tra giới thiệu.

session.referer_check chứa chuỗi con bạn muốn kiểm tra từng Trình giới thiệu HTTP cho. Nếu Trình giới thiệu được gửi bởi ứng dụng khách và chuỗi con không được tìm thấy, id phiên được nhúng sẽ được đánh dấu là không hợp lệ. Mặc định là chuỗi rỗng.

Vì vậy, giao diện của nó, những thứ bạn đang mất là khả năng xác định chính xác ai và phiên bạn đang xử lý.

Tôi gặp phải vấn đề tương tự với việc mất phiên và nhiều câu trả lời chỉ đến việc sử dụng $ this-> requestAction() vì nó sẽ cơ bản curl yêu cầu ra khỏi ứng dụng, vì vậy nó có thể giống như một phiên khác đang được tạo với mức cao Bảo vệ.

Điều khác mà nhiều câu trả lời của google đã được giải quyết là tắt Session.checkAgent trong app/config/core.php của bạn vì điều đó có nghĩa là phiên không được kiểm tra. Điều này ít nhất đã ngăn tôi mất thông tin phiên giữa các yêu cầu trang.

:)

+1

Đối với bất kỳ ai Google này, giá trị 'Session.timeout' KHÔNG được nhân với các phiên bản gần đây của Bánh (có thể là 2.0 hoặc 2.1 trở lên). –

+0

Làm rõ, ['requestAction()'] (http://book.cakephp.org/2.0/en/controllers.html#Controller::requestAction) thực hiện một hành động lập trình thông qua logic xử lý yêu cầu chuẩn như thể nó là một thực yêu cầu. Không sử dụng curl vv –

1

hai điều xảy ra khi thiết để

1) thời gian chờ

'thấp' lớn

2) nếu phiên highjacking rất dễ dàng, sau đó nó sẽ được dễ dàng hơn! kể từ khi dosent phiên tạo lại giữa các yêu cầu khi được đặt thành 'cao'!

và không có gì khác.

bởi cách bạn có thể thay đổi cho một trang cụ thể mức độ bảo mật hoặc thời gian chờ phiên hoặc cả hai ... do đó nó không phải là một không lùi lại lựa chọn

Các vấn đề liên quan