Mã hóa trong C# Web-Services


16

Tôi đang tìm một cách đơn giản để mã hóa giao tiếp xà phòng của tôi trong C# Web-Service.

Tôi đã xem xét WSE 3.0 nhưng có vẻ như Microsoft đã bỏ hỗ trợ cho nó và do đó không dễ sử dụng.
Dường như WCF có thể là một lựa chọn nhưng tôi không muốn nâng cấp từ .NET 2.0.

Bất kỳ đơn giản, phương pháp mã hóa đơn giản nào?

8

Tôi nghĩ điều này có thể hữu ích; năm ngoái chúng tôi sử dụng điều này để nén các dịch vụ web và nó hoạt động rất tốt, tôi tin rằng nó có thể được tăng cường với các lớp mã hóa;

Creating Custom SOAP Extensions - Compression Extension


0

Có lẽ tôi đang ngây thơ, nhưng sẽ buộc phải liên lạc qua https được chấp nhận? Tôi phát triển các dịch vụ web chạy trên 2.0 và đã thành công với việc chỉ nhận IIS để thực thi https trên thư mục ảo.

Hoặc, hoặc ngoài ra, bạn có thể kiểm tra HttpRequest.IsSecureConnection property.


1

Có lẽ tôi là ngây thơ, nhưng sẽ buộc các thông tin liên lạc được thông qua https thể chấp nhận được? Tôi phát triển các dịch vụ web chạy trên 2.0 và đã có thành công chỉ với việc thực hiện IIS để thi hành https trên thư mục ảo .

Đó sẽ là cách đơn giản nhất để đi lẽ, nhưng tiếc là tôi không có kiểm soát đối với cấu hình IIS, và không thể đảm bảo rằng nó có thể chạy https.

Trong trường hợp đó, có lẽ đặt cược tốt nhất là phần mã hóa từng trường hợp của các thông điệp SOAP (sau khi tất cả, bạn có thể không cần toàn bộ thư được mã hóa - chỉ một số trường nhạy cảm?), hoặc bạn có thể chọn sử dụng một HttpModule để chặn tất cả các tin nhắn và hoạt động trên các nội dung. Trong cả hai trường hợp, bạn có thể sẽ phải cung cấp proxy tùy chỉnh.


0

Chúng tôi thực sự sử dụng WSE 3.0 trong các dịch vụ web của chúng tôi, mà đã được phát triển ban đầu trước WCF. Để bảo mật, chúng tôi sử dụng hệ thống dựa trên mã thông báo SAML được xây dựng trên các lớp Mật mã trong System.Security.

Nó hoạt động rất tốt. Tuy nhiên, phương pháp này không có nghĩa là "đơn giản".


2

Mọi việc bạn làm để cung cấp "mã hóa" không sử dụng SSL/TLS có thể dễ bị tổn thương. Bây giờ bạn phải tự hỏi mình, liệu nó có đáng để bạn có thể dành nhiều thời gian cho việc đốt cháy, bạn có thể chi tiêu cho các tính năng trên một biện pháp an ninh cao su-gà không? Có thể nó là.

API .NET như DPAPI và API crypt32 của Win32 giúp dễ dàng mã hóa các đốm dữ liệu bằng các khóa tĩnh. Nhưng khách hàng của bạn sẽ nhận được khóa như thế nào? Bất kỳ máy khách SOAP nào đã cài đặt sẽ phải có khóa được ghi vào cấu hình của nó hoặc nhận nó qua Internet không an toàn.

Đây là vấn đề SSL/TLS giải quyết cho bạn; điệu nhảy bạn làm với chứng chỉ TLS là cách giải quyết vấn đề truyền đạt khóa công khai qua các kênh không đáng tin cậy.


0

Bạn có thể sử dụng mã hóa thông số trong C# bằng cách sử dụng phần mở rộng System.Security.Cryptography.

Mã hóa thông số của bạn và giải mã chúng sẽ khó hơn nhưng an toàn hơn nhiều.

How To: Encrypt and Decrypt Data Using a Symmetric (Rijndael) Key (C#/VB.NET)

Tôi đang sử dụng aproach này cho một OTP (một thời gian mật khẩu) dịch vụ web, và nó hoạt động tốt đối với tôi.