Nó không quan trọng nơi dữ liệu được mã hóa được lưu trữ, nó quan trọng như thế nào nó được mã hóa.
Các phần được mã hóa trong web.config thường được mã hóa bằng API Bảo vệ Dữ liệu , cực kỳ khó bẻ khóa mà không ảnh hưởng đến toàn bộ máy. Bạn cũng có thể sử dụng bộ chứa khóa RSA, tương tự (khó lấy chúng ra khỏi máy).
Nếu bạn muốn lưu trữ chuỗi được mã hóa trong DLL, thì tốt thôi, tôi đoán vậy, mặc dù nó không an toàn hơn một web.config được mã hóa (bất kỳ ai cũng có thể xem qua DLL đó bằng Reflector ) và rõ ràng là khó thay đổi hơn (bạn 'Cần phải biên dịch lại). Nhưng một lần nữa, điều quan trọng hơn nhiều là cách tạo ra chuỗi mã hóa đó; có lẽ bạn không sử dụng cùng một nhà cung cấp cho một web.config được mã hóa, vậy bạn đang sử dụng cái gì?
Một lược đồ mã hóa chỉ mạnh như khóa riêng hoặc bí mật chung. Nếu khóa đó là cũng được lưu trữ trong hội đồng của bạn, thì bạn cũng có thể không có mã hóa nào cả. Nếu nó được lưu trữ trong một số cơ sở dữ liệu bên ngoài, thì nó sẽ đặt ra câu hỏi làm thế nào chuỗi kết nối của cơ sở dữ liệu đó được bảo mật. Điều này thực sự chỉ có thể dẫn đến bảo mật yếu hơn nói chung.
Mặt khác, nếu bạn là nhà cung cấp dịch vụ và chuỗi kết nối được mã hóa với người dùng mật khẩu, thì đó sẽ là hơn an toàn hơn là sử dụng một chìa khóa máy tĩnh. Sau đó, một lần nữa, nếu bạn đang sử dụng mật khẩu người dùng để mã hóa, rất có thể bạn sẽ không thể mã hóa dữ liệu được mã hóa trong tổ hợp của mình, vì nó cần được tạo và lưu trữ để đáp ứng với hành động của người dùng (không phải nhà phát triển).
Thực sự tôi không thể nghĩ ra quá nhiều tình huống trong đó mã hóa cứng chuỗi kết nối (được mã hóa) trong DLL là an toàn hơn so với mã hóa phần web.config có liên quan. Tốt nhất là nó chỉ thêm sự bất tiện, tệ nhất là nó dựa vào một số bảo mật tùy chỉnh được viết một cách vụng về với những lỗ hổng. Tự mình làm và làm những gì Microsoft khuyến nghị - chỉ cần mã hóa web.config của bạn nếu có dữ liệu nhạy cảm trong đó.