Đặt tên khóa mạnh (tệp snk). Có bất kỳ vấn đề bảo mật nào thêm tệp này vào kiểm soát nguồn cho một dự án nguồn mở không?Bất kỳ sự cố bảo mật nào thêm một khóa tên mạnh để kiểm soát nguồn cho một dự án nguồn mở?
Trả lời
Câu trả lời đơn giản là có và không - nó phụ thuộc vào mục đích mà bạn mạnh mẽ ký tên hội đồng của bạn ở nơi đầu tiên.
Trang MSDN trên Strong-Name Signing tóm tắt hai mục đích khá tốt.
Đặt tên mạnh sẽ cung cấp cho ứng dụng hoặc thành phần một mã nhận dạng duy nhất phần mềm khác có thể sử dụng để tham chiếu rõ ràng với nó. Ví dụ: đặt tên mạnh cho phép tác giả và quản trị viên ứng dụng chỉ định phiên bản dịch vụ chính xác được sử dụng cho thành phần được chia sẻ. Điều này cho phép các ứng dụng khác nhau chỉ định các phiên bản khác nhau mà không ảnh hưởng đến các ứng dụng khác. Ngoài ra, bạn có thể sử dụng tên mạnh mẽ của một thành phần làm bằng chứng bảo mật để thiết lập mối quan hệ tin cậy giữa hai thành phần.
Bất kỳ thư viện được phân phối công khai nào (DLL) phải được ký tên mạnh, miễn là nó được dự định sẽ được người dùng cuối sử dụng. (ví dụ: Trừ khi nó là chi tiết thực hiện hoặc như vậy.)
Mục đích chính của việc ký tên mà tôi thấy có nhiều lý do kỹ thuật hơn, bao gồm nhận dạng duy nhất (không gian tên đôi khi có thể vô tình đụng độ) và lắp ráp GAC. Trong những trường hợp như vậy, việc cung cấp tệp khóa công khai có sẵn không có tác động bảo mật, bởi vì không có tệp nào được dự định ở vị trí đầu tiên. Không có đảm bảo nào về sự tin cậy/nguồn gốc được cung cấp, nhưng nhận dạng duy nhất vẫn hợp lệ. Trang MSDN chủ yếu thảo luận về kịch bản này; những lúc bạn nên và không nên ký một hội đồng; và các chi tiết xung quanh.
Nếu bạn đang ký hợp đồng với mục đích xác thực - cụ thể, để đảm bảo cho người tiêu dùng rằng hội đồng đến từ nguồn được xác nhận quyền sở hữu - thì một khóa được công khai hoàn toàn vô hiệu mô hình tin cậy này. Đó là, bất cứ ai có thể đi sửa đổi mã dự án của bạn tùy ý, và xây dựng lại và từ chức hội đồng của bạn một cách chính xác, cơ bản giả mạo danh tính của bạn. Các trang MSDN không địa chỉ này sử dụng cũng không may (có lẽ bởi vì nó cần phải được xem xét rộng rãi hơn như một phần của một chiến lược an ninh), nhưng điều quan trọng là dù sao.
Cuối cùng, lưu ý rằng có hai loại tệp chứng chỉ khóa mà CLR/.NET sử dụng để ký các assembly. Đầu tiên là một SNK, như bạn đề cập đến; điều này không được bảo vệ bằng mật khẩu. Thứ hai là PFX, đây thực sự chỉ là một phiên bản được bảo vệ bằng mật khẩu của một tệp khóa SNK. Miễn là mật khẩu này đủ an toàn, do đó có không có vấn đề bảo mật khi phân phối PFX được bảo mật bằng phần mềm nguồn mở của bạn. Visual Studio (và tiện ích tạo khóa dòng lệnh) tất nhiên là có khả năng tạo cả hai.
- 1. Cách được khuyến nghị để quản lý cặp khóa tên mạnh cho một dự án mã nguồn mở là gì?
- 2. Sử dụng thư viện được kiểm soát nguồn trong các dự án được kiểm soát nguồn
- 3. Làm cách nào để loại trừ khóa bí mật khỏi dự án Xcode nguồn mở?
- 4. Bảo mật nguồn PhoneGap
- 5. Kiểm soát nguồn: Nhiều kho lưu trữ cho cùng một dự án
- 6. Kiểm soát nguồn với tích hợp Visual Studio cho một dự án nhỏ
- 7. Bất kỳ dự án tài chính nguồn mở cao cấp nào?
- 8. Khi nào bạn nên bảo vệ tệp khóa tên mạnh bằng mật khẩu?
- 9. Tạo một dự án Android Mã nguồn mở?
- 10. Cách tạo dự án iOS nguồn mở?
- 11. bắt đầu một dự án javascript mã nguồn mở
- 12. Tìm kiếm một dự án mã nguồn mở C#
- 13. Virtualenv và kiểm soát phiên bản nguồn
- 14. Delphi - dự án mã nguồn mở
- 15. Kiểm soát nguồn cho a .Net guy
- 16. Các tệp dự án IDE có nên được đặt dưới sự kiểm soát nguồn không?
- 17. Dự án nguồn mở Asp.net như một nguồn học tập trong C#
- 18. Làm cách nào để bật Kiểm soát nguồn trong dự án iOS hiện tại?
- 19. Lưu trữ DVCS Mercurial nào bạn muốn giới thiệu cho một dự án nguồn mở nhỏ?
- 20. Mỗi dự án có được ký với một Khóa Tên mạnh Riêng biệt (.snk) không?
- 21. mã nguồn mở của Ruby Dự án
- 22. Bạn có thể đề xuất bất kỳ dự án nguồn mở nào trong đó nguồn được thử nghiệm rộng rãi với các bài kiểm tra đơn vị không?
- 23. Quản lý kiểm soát phát hành mã nguồn mở
- 24. Ký mã nhị phân của các dự án nguồn mở
- 25. Dự án nguồn mở dành cho nhà phát triển C++?
- 26. Làm cách nào để bắt đầu một dự án nguồn mở thành công?
- 27. "Thêm vào kiểm soát nguồn" tùy chọn khi thực hiện một dự án C# mới trong VS 2010
- 28. Bất kỳ điều khiển Gauge WPF nào là nguồn mở?
- 29. Cũng viết các dự án nguồn mở (cho việc học)?
- 30. Triển khai Matlab: thêm tệp vào kiểm soát nguồn?
Bạn cũng có thể muốn xem câu trả lời này và ngoại suy một cách thích hợp cho các tệp khóa PFX. –
Noldorin
Và 'sn.exe' là tiện ích tạo/thao tác tên mạnh mà bạn muốn nếu chạy từ dòng lệnh. Nó cung cấp một vài tính năng công bằng, hầu hết trong số đó bạn có thể sẽ không bao giờ cần. http://msdn.microsoft.com/en-us/library/k5b5tt23%28v=vs.100%29.aspx – Noldorin