มันไม่สำคัญว่าที่เข้ารหัสข้อมูลจะถูกเก็บไว้มันเป็นเรื่องสำคัญว่ามันเข้ารหัส
ส่วนที่เข้ารหัสใน web.config จะถูกเข้ารหัสด้วยData Protection APIซึ่งเป็นเรื่องยากมากที่จะถอดรหัสโดยไม่กระทบต่อทั้งเครื่อง คุณยังสามารถใช้ที่เก็บคีย์ RSA ซึ่งคล้ายกันได้ (ยากที่จะนำสิ่งเหล่านี้ออกจากเครื่อง)
ถ้าคุณต้องการเก็บสตริงที่เข้ารหัสไว้ใน DLL ก็ไม่เป็นไรฉันคิดว่าแม้ว่ามันจะไม่ปลอดภัยกว่า web.config ที่เข้ารหัส (ใครก็ตามที่สามารถแอบดู DLL นั้นพร้อมกับReflector ) และเห็นได้ชัดว่าเป็นการยากที่จะเปลี่ยน (คุณ จำเป็นต้องคอมไพล์ใหม่) แต่สิ่งที่สำคัญกว่านั้นก็คือการสร้างสตริงที่เข้ารหัส สันนิษฐานว่าคุณไม่ได้ใช้ผู้ให้บริการแบบเดียวกับที่คุณทำกับ web.config ที่เข้ารหัสดังนั้นคุณใช้อะไร
รูปแบบการเข้ารหัสมีความแข็งแกร่งเท่ากับคีย์ส่วนตัวหรือความลับที่ใช้ร่วมกัน ถ้าคีย์ที่ยังเก็บไว้ในการชุมนุมของคุณแล้วคุณเช่นกันอาจจะมีการเข้ารหัสที่ไม่ทั้งหมด ถ้ามันถูกเก็บไว้ในฐานข้อมูลภายนอกก็จะทำให้เกิดคำถามว่าสตริงการเชื่อมต่อของฐานข้อมูลนั้นปลอดภัยอย่างไร สิ่งนี้สามารถนำไปสู่ความปลอดภัยโดยรวมที่อ่อนแอลงเท่านั้น
ในทางตรงกันข้ามถ้าคุณเป็นผู้ให้บริการการบริการและสตริงการเชื่อมต่อถูกเข้ารหัสด้วยผู้ใช้รหัสผ่านแล้วที่จะเป็นมากขึ้นการรักษาความปลอดภัยกว่าการใช้คีย์เครื่องคงที่ จากนั้นอีกครั้งหากคุณใช้รหัสผ่านของผู้ใช้ในการเข้ารหัสมันไม่น่าเป็นไปได้ที่คุณจะเข้ารหัสข้อมูลที่เข้ารหัสในชุดประกอบของคุณอย่างหนักเนื่องจากจะต้องมีการสร้างและจัดเก็บตามการกระทำของผู้ใช้
จริง ๆ แล้วฉันไม่สามารถคิดถึงสถานการณ์มากเกินไปที่การเข้ารหัสสตริงการเชื่อมต่อ (เข้ารหัส) ใน DLL จะปลอดภัยกว่าการเข้ารหัสส่วน web.config ที่เกี่ยวข้อง ที่ดีที่สุดก็แค่เพิ่มความไม่สะดวกที่แย่ที่สุดก็คือการรักษาความปลอดภัยที่กำหนดเองที่เขียนขึ้นอย่างงุ่มง่ามซึ่งเต็มไปด้วยช่องโหว่ ทำสิ่งที่ชอบด้วยตัวคุณเองและทำตามที่ Microsoft แนะนำ - เพียงเข้ารหัส web.config หากมีข้อมูลที่ละเอียดอ่อนอยู่ในนั้น