2013-09-25 86 views
11

Tôi đang cố gắng bảo mật ứng dụng phát của mình nhưng tôi không biết bắt đầu từ đâu. Trong hướng dẫn chơi, tôi đã không tìm thấy bất kỳ chương nào về chủ đề đó. Theo như tôi thấy chủ đề bảo mật đang thay đổi giữa các phiên bản chơi. Vì vậy, những gì bạn đang sử dụng để bảo vệ các ứng dụng của bạn. Tôi mới ở Play nên hãy tha thứ cho tôi nếu tôi hỏi những câu hỏi rõ ràng.Bảo mật trong Play 2.2.x

Chỉnh sửa: Ok, câu hỏi maby chưa đủ rõ ràng (tôi thực sự xin lỗi về điều đó). Khi nói về bảo mật, tôi có nghĩa là tôi cần một cái gì đó để đối phó với thông tin và công cụ người dùng cho phép tôi hạn chế quyền truy cập vào một số trang và cuối cùng là một số hành động còn lại trong ứng dụng của tôi.

Chỉnh sửa2: Tôi sẽ thử deadbolt2 ngay bây giờ và chúng tôi sẽ xem nó hoạt động như thế nào. Nhưng tôi vẫn cổ vũ các bạn Chia sẻ kiến ​​thức của bạn về Bảo mật Play với người khác :)

+0

Bạn có ý gì khi bảo mật ứng dụng của mình? Thêm một mật khẩu bảo vệ cho một số trang? Bảo vệ toàn bộ thư mục? Tránh các vấn đề về bảo mật như tiêm SQL, viết mã chéo, ...? – ffarquet

+0

Câu trả lời tùy thuộc vào những gì thực sự là câu hỏi: 1) đối phó với phiên, cookie, ... 2) htaccess 3) khung chơi sẽ tránh những điều như vậy nếu bạn sử dụng nó một cách chính xác – ffarquet

+0

Bạn có hai khả năng: xác định [bộ lọc] (http : //www.playframework.com/documentation/2.2.x/ScalaHttpFilters) hoặc hành động riêng - xem @Mikesname answer –

Trả lời

4

Tài liệu dường như vẫn hơi mờ nhạt về chủ đề này, nhưng về cơ bản, chức năng xác thực/ủy quyền thường được thực hiện bằng cách sử dụng cơ sở của mã điều khiển có thể tái sử dụng trong Play. Có một ví dụ here (cũng được liên kết từ số docs sẽ giúp cung cấp cho bạn ý tưởng chung.)

Thành phần tác vụ trong Play 2.2.x được thực hiện bằng cách sử dụng ActionBuilders. Chúng lấy một khối chấp nhận yêu cầu và trả về một số Future[SimpleResult]. Điều này cho phép xây dựng hành động để một trong hai thực hiện khối nhất định, hoặc trả lại một khác nhau Future[SimpleResult] (nói, một Unauthorized trong trường hợp thông tin của người dùng đã không kiểm tra.)

Trong ứng dụng của chúng tôi, chúng tôi sử dụng các mô-đun Play2-auth để xử lý xác thực với cookie phiên. Điều này đã được cập nhật để hoạt động với Play 2.2.x nhưng sử dụng một cơ chế hơi khác cho thành phần hành động (stackable controllers.) Bạn có thể làm tốt nhất cách bạn có thể hoàn thành chức năng chính xác mà bạn cần bằng cách sử dụng các công cụ khung gốc trước đây thêm một phụ thuộc vào nó.

+0

Cảm ơn bạn đã trả lời. Tôi đã chỉ đỏ về Play2-auth và họ nói rằng deadbolt2 là cho java và Play2-auth là cho scala nhưng nó không đúng sự thật. Deadbolt2 cũng cho scala. Vì vậy, tôi sẽ thử với điều đó (deadbolt2) và chúng ta sẽ thấy nó hoạt động như thế nào. – user1887701

1

Kiểm soát truy cập, bảo mật, v.v. là một chủ đề rất rộng, vì nó có nghĩa là những điều rất khác nhau tùy thuộc vào ngữ cảnh. Đây có thể là một trong những lý do tại sao Play có ít tài liệu cho nó, điều này khiến tôi bối rối ngay từ đầu.

Play2 có một số security helpers, cụ thể là phương pháp Authenticated, để biết một số thông tin chi tiết về cách sử dụng, hãy kiểm tra các nhận xét trong mã nguồn. Một phương pháp đơn giản mà bạn có thể thực hiện chính mình, và hầu hết làm. Về cơ bản, nó chỉ đề xuất một cấu trúc cho vị trí đặt các phương thức mà bạn sẽ kiểm tra nếu yêu cầu được xác thực và phải làm gì nếu không.

Play2 cũng có một số logic mã hóa, được sử dụng để ký cookie.

Đó là về nó, bạn không có bất kỳ cấu trúc bảo mật được xây dựng trước nào nữa, nhưng đó là một điều tốt, bởi vì bạn không muốn quyết định tạo khung như vậy cho bạn, nếu nó không biết bối cảnh nó sẽ được sử dụng.

Điều cần thiết là đi và nghiên cứu các cuộc tấn công liên quan đến đơn đăng ký của bạn được thực hiện, thực tiễn tốt nhất và v.v. Tôi khuyên bạn nên đến OWASP, đặc biệt là OWASP Cheat Sheets. Nếu danh sách Cheat Sheets có vẻ đáng sợ bắt đầu với the OWASP Top Ten Cheat Sheet. Đừng bận tâm đến khối lượng thông tin lớn, đó là kiến ​​thức rất hữu ích.

2

Tôi đồng ý với các câu trả lời khác nhưng chỉ thêm rằng tôi sử dụng bảo mật xã hội để tích hợp với các nhà cung cấp xác thực khác (google, FB, v.v ...), vì vậy tôi không phải tự mình làm. Nó khá dễ dàng để có được và chạy.

https://github.com/jaliss/securesocial