Home Tin tức nhibernate là gì

nhibernate là gì

0
nhibernate là gì

Bài viết nhibernate là gì thuộc chủ đề về Giải Đáp Thắc Mắt đang được rất nhiều bạn quan tâm đúng không nào !! Hôm nay, Hãy cùng Asianaairlines.com.vn tìm hiểu nhibernate là gì trong bài viết hôm nay nha !
Các bạn đang xem bài viết : “nhibernate là gì”

Thông thường khi dùng Nhibernate để phát triển ứng dụng web hay ứng dụng winform chúng ta thường bỏ chuỗi kết nối ở file hibernate.cfg.xml , mình thấy bỏ thế nào không an toàn nên sau khi google với tìm hiểu mình đã tìm ra cách để bỏ vào webconfig và mã hóa chuỗi kết nối này cho nó an toàn nhằm tránh shell

*

Thông thường thì chuỗi kết nối cơ sở dữ liệu thường bỏ ở file hibernate.cfg.xml như sau :

      Chuỗi kết nối cơ sở dữ liệu ở đây

   

Để mã hóa chuỗi kết nối ta viết một lớp là Crypto để mã hóa và giải mã trước đã

public static class Crypto    {        const string InitialVector = “4AQYuEmZ3Q7gNHdj”;               public static string Encrypt(string data,string pass)                   if (string.IsNullOrEmpty(data)) return “”;

           var initialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);            var plainTextBytes = Encoding.UTF8.GetBytes(data);            var keyBytes = Encoding.ASCII.GetBytes(pass);

           var symmetricKey = new RijndaelManaged();            symmetricKey.Mode = CipherMode.CBC;            byte cipherTextBytes = null;            using (var encryptor = symmetricKey.CreateEncryptor(keyBytes, initialVectorBytes))                           using (var memStream = new MemoryStream())                                   using (var cryptoStream = new CryptoStream(memStream, encryptor, CryptoStreamMode.Write))                                           cryptoStream.Write(plainTextBytes, 0, plainTextBytes.Length);                        cryptoStream.FlushFinalBlock();                        cipherTextBytes = memStream.ToArray();                        memStream.Close();                        cryptoStream.Close();                                                         symmetricKey.Clear();            return Convert.ToBase64String(cipherTextBytes);                              public static string Decrypt(string data,pass)                   if (string.IsNullOrEmpty(data)) return “”;

           var initialVectorBytes = Encoding.ASCII.GetBytes(InitialVector);            var cipherTextBytes = Convert.FromBase64String(data);            var keyBytes = Encoding.ASCII.GetBytes(pass);

           var symmetricKey = new RijndaelManaged();            symmetricKey.Mode = CipherMode.CBC;            var plainTextBytes = new byte;            var byteCount = 0;            using (var decryptor = symmetricKey.CreateDecryptor(keyBytes, initialVectorBytes))                           using (var memStream = new MemoryStream(cipherTextBytes))                                   using (var cryptoStream = new CryptoStream(memStream, decryptor, CryptoStreamMode.Read))                                           byteCount = cryptoStream.Read(plainTextBytes, 0, plainTextBytes.Length);                        memStream.Close();                        cryptoStream.Close();                                                         symmetricKey.Clear();            return Encoding.UTF8.GetString(plainTextBytes, 0, byteCount);                           }

Mục đích của lớp này là mã hóa theo pass và giải mã theo pass một chuỗi, mục đích là mã hóa chuỗi kết nối.

Để sửa lại phương thức lấy chuỗi kết nối ta override lại lớp NHibernate.Connection.DriverConnectionProvider như sau :

public class MyConnectionProvider : NHibernate.Connection.DriverConnectionProvider             static string conn = “”;         protected override string ConnectionString                     get                             if (string.IsNullOrEmpty(conn))                

                    string connectionString = ConfigurationManager.ConnectionStrings.ConnectionString;                     conn= Crypto.Decrypt(connectionString,”sokhanh03″);                                 return conn;                                        

Sửa file hibernate.cfg.xml như sau :

      (Name space của MyConnectionProvider).MyConnectionProvider,Name space của MyConnectionProvider          

Chú ý comment lại dòng NHibernate.Connection.DriverConnectionProvider

Sau đó vào file webconfig hay app.config sửa lại thành :

           

Như vậy ta đã chuyển chuỗi kết nối từ file hibernate.cfg.xml sang file webconfig(app.config) đã mã hóa, sau đó tiến hành code bình thường.

Mục đích của việt này là tránh việc bị shell đọc file webconfig và lấy chuỗi kết nối

Chuyên mục: Hỏi Đáp

Các câu hỏi về nhibernate là gì

Team Asinana mà chi tiết là Ý Nhi đã biên soạn bài viết dựa trên tư liệu sẵn có và kiến thức từ Internet. Dĩ nhiên tụi mình biết có nhiều câu hỏi và nội dung chưa thỏa mãn được bắt buộc của các bạn.

Thế nhưng với tinh thần tiếp thu và nâng cao hơn, Mình luôn đón nhận tất cả các ý kiến khen chê từ các bạn & Quý đọc giả cho bài viêt nhibernate là gì

Nếu có bắt kỳ câu hỏi thắc mắt nào vê nhibernate là gì hãy cho chúng mình biết nha, mõi thắt mắt hay góp ý của các bạn sẽ giúp mình nâng cao hơn hơn trong các bài sau nha

Các Hình Ảnh Về nhibernate là gì

nhibernate là gì

Các từ khóa tìm kiếm cho bài viết #nhibernate #là #gì

Tham khảo dữ liệu, về nhibernate là gì tại WikiPedia

Bạn nên tra cứu thêm nội dung chi tiết về nhibernate là gì từ trang Wikipedia tiếng Việt.◄

Tham Gia Cộng Đồng Tại

💝 Nguồn Tin tại: https://asianaairlines.com.vn

💝 Xem Thêm Giải Đáp Thắc Mắt tại : https://asianaairlines.com.vn/wiki-hoi-dap/

Rate this post