Hỏi đáp

Giải Thích Những Khái Niệm Về Inject Là Gì, Nghĩa Của Từ Inject – viettingame

Trong phát triển ứng dụng, chúng ta thường hay nghe tới những quan điểm Dependency Injection, SQL Injection, etc nhưng vẫn không hiểu nó ra sao.

Đang xem: Inject là gì

Thực ra những công thức này thì vốn rất đơn giản và giản dị, chả sở hữu gì quan trọng đặc biệt.Nội dung bài viết này mình sẽ trình bày về nguyên tắc Injection và Ví dụ liên quan trong Software Engineering

Ai cần đọc bài này:

Giành riêng cho dân chuyên đã biếtrồi sở hữu phương pháp để tiết kiệm ngân sách time để trình bày hoặc chém cho chúng ta ko biết gì.Dân ko chuyên, ko biết gì thậm chí hiểu và tự tin chém về những nguyên tắc Injection trong Software Engineering.Giành riêng cho việc xem thêm giúp chúng ta lười trình bày share lẫn nhau.

I. Injection là gì?

Trước hết chúng ta cần hiểu Injection là gì?

Injection dịch trần từ tiếng Anh thì là việc tiêm chích, tiêm nhiễm. Ex: tiêm thuốc phòng, tiêm chích ma túy, etc.

Thành tựu của việc tiêm này thì thậm chí mang lại hiệu ứng tốt hoặc xấu tùy vào mình tiêm thuốc hay là ma túy hoặc tiêm thuốc độc giành riêng cho việc tử hình những tử tù ở Việt Nam hay là một số nước trên trái đất.

Nhìn một cách tổng quát hơn, quy trình tiêm là cho thuốc hoặc kích thích vào hệ vòng luân hồi máu của thể chất và lợi dụng hệ vòng luân hồi máu này để làm thay đổi (tốt hoặc xấu) tới thể chất.

Tuy nhiên ví dụ ở trên là tôi đang nói về việc tiêm thuốc dịch trần tiếng anh là Vaccine Injection. Nó chỉ là 1 trong những trường hợp của Injection trong tiếng Anh thôi.

Thật ra Injection trong tiếng Anh thì thậm chí tiêm (injection) rất nhiều những loại khác ngoài thuốc. Ví dụ như trong Software Engineering thì sẽ xuất hiện những quan điểm như SQL Injection, OS command Injection, Dependency Injection.

Do từ vựng tiếng việt hạn chế nên người ra dịch là tiêm, và chỉ sở hữu từ tiêm thuốc là map với injection nên mọi người chỉ nghĩ tới là việc tiêm thuốc. Và hiện chưa xuất hiện từ nào để map với từ injection này nên làm cho mọi người bị hiểu lầm là việc tiêm thuốc (vốn chỉ là 1 trong những trong số trường hợp rõ ràng của injection trong tiếng Anh). Nói tóm gọn việc phối giống cho gà hay thụ tinh ở người thì tiếng anh cũng thậm chí gọi là 1 trong những quy trình injection do tác động vào công thức sinh sản sở hữu sẵn.

Tôi thì ko phải là nhà từ ngữ học nên cũng ko dám định nghĩa thêm từ tiếng việt nào thỏa mãn nhu cầu đúng chuẩn với từ Injection. Cho nên từ những đoạn tiếp theo tôi sẽ sử dụng từ Injection cho nó phân biệt với từ “tiêm” trong tiếng Việt nhé.

Nói một cách trừu tượng hóa Injection là việc tác động tới tới công thức sở hữu sẵn và lợi dụng công thức này cho một mục đích nào khác.

Như trường hợp tiêm thuốc thì là sử dụng thuốc tác động tới công thức vòng luân hồi máu. Và nhờ công thức này thuốc được phát tán khắp thể chất.

Ở trong phát triển phầm mềm thì công thức này cũng y hệt như vậy. Nếu hiểu như trên thì công thức này thì vốn rất simple, chả sở hữu gì quan trọng đặc biệt đúng không nào nào?

Đi sâu phân tích sâu thêm một chút thì để triển khai được việc injection vừa đủ thì sẽ cần những đối tượng người sử dụng sau :

Đối tượng người tiêu dùng cần inject.Lỗ hổng của công thức.Công thức sẵn sở hữu.

Tôi xin phép ví dụ trường hợp tiêm thuốc (1 trong số trường hợp của injection) thì sẽ như sau :

Đối tượng người tiêu dùng cần inject: thuốc.Lỗ hổng: lỗ, ven mạch máu để thậm chí tiêm tác động vào hệ vòng luân hồi.Công thức sẵn sở hữu: hệ vòng luân hồi máu.

Ở trên đây tôi ko nói đến việc hậu quả của việc injection vì như thế nói tóm gọn mục đích ở đầu cuối là sẽ tác động thay đổi tới vật chủ, hậu quả tốt hay xấu ko bàn ở trên đây.

Như ví dụ tôi nói ở trên thì quy trình tiêm thuốc mọi người đều ko để ý tới 1 đối tượng người sử dụng rất quan trọng, này là “lỗ hổng” – nói một cách dễ hiểu..

Lúc triển khai tiêm thì sẽ cần tìm lỗ ven mạch máu trước nhất. Nếu như trên thể chất ko có một mẫu “lỗ” nào để thậm chí chọc kim tiêm vào, thì sẽ không còn cách nào tác động vào hệ vòng luân hồi máu để hoàn thành việc tiêm thuốc(injection).

Và trong số quan điểm về Injection trong Software Engineering thì mẫu “lỗ” cũng rất quan trọng, và khi nào chính thức việc injection thì người ta sẽ cần tìm về mẫu “lỗ” trước nhất như việc chính thức quy trình giao phối của những loài động vật sở hữu vú.

Những phần tiếp theo tôi cũng đề cập tới những “lỗ” hổng này và chúng ta nhớ ghi chú nhé.

II – SQL Injection

SQL Injection thì trong Software Engineering thường nói đến việc lỗ hổng bảo mật của phầm mềm cho phép người sử dụng thậm chí truy nhập trực tiếp vào trung tâm dữ liệu (database) của cả khối hệ thống nhằm mục đích ăn cắp thông tin, phá hoại khối hệ thống.

Trước hết giành riêng cho ai chưa chắc chắn, SQL ở trên đây là những câu lệnh sử dụng để truy nhập vào database của 1 khối hệ thống.

*

Cũng như việc tiêm thuốc, thay vì như thế inject thuốc thì thậm chí inject những câu lệnhSQL từ bên phía ngoài trải qua công thức truy nhập trung tâm dữ liệu của ứng dụng. Những đối tượng người sử dụng trong việc injection này bao hàm :

Đối tượng người tiêu dùng cần inject: những câu lệnh SQL.Lỗ hổng: những nguồn input từ người sử dụng bên phía ngoài. Ex: nhập user name, password, nhập thông tin trên website, ứng dụng.Công thức sẵn sở hữu: công thức truy nhập tới trung tâm dữ liệu của khối hệ thống.

Ví dụ như lúc tôi viết blog trên website này. Tôi thay vì như thế viết nội dung blog mà thay vào đó, thêm những câu lệnh SQL thay đổi database của hệ thông web để sửa 1 topic của tôi thì rank tối đa, rate tối đa để ăn tiền công viết ví dụ điển hình.

Xem thêm: Aboriginal Là Gì – Aboriginal Vs Indigenous People

Cũng như việc tiêm thuốc thôi, thay vì như thế tôi tiêm (inject) thuốc để điều trị hay làm chết người thì tôi Inject SQL vào hệ thông để chỉnh sửa data của khối hệ thống hoặc làm chết khối hệ thống.

Về mặt bảo mật thông tin lúc mà người sử dụng thoải mái lấy hoặc thay data của khối hệ thống trải qua việc inject những câu lệnh SQL như trên là rất nguy hiểm.

Ví dụ: ăn cắp thông tin, sửa dổi tài khoản trên khối hệ thống tài chính, ngân hàng. Ăn cắp bảng lương của nhà hàng trải qua website vận hành của nhà hàng.

Như tôi đã nói ở trên lỗ hổng rất quan trọng để triển khai việc injection, ở trên đây lỗ hổng là từ input của người sử dụng, lúc mà người sử dụng thoải mái inject những câu lệnh SQL để thay đổi cả khối hệ thống.

Cho nên về mặt bảo mật thông tin thì việc kiểm tra, validate những nguồn input này của người sử dụng để ngăn chặn truy nhập trực tiếp vào là rất quan trọng. Tương tự còn tồn tại quan điểm khác về bảo mật như OS Command Injection, trường hợp này thì là inject những câu lệnh gọi tới hệ điều hành của khối hệ thống nhằm mục đích cướp quyền kiểm soát hoặc phá hoại. Về nguyên tắc nó vốn đơn giản và giản dị như việc tiêm đã trình bày ở phần I.

III – Dependency Injection

Để hiểu được về công thức Dependency Injection trước hết bạn phải hiểu trước về nguyên tắc Dependencyinversion. Tuy nhiên về Dependencyinversion thì lại là quan điểm khá loằng ngoằng 1 chút, cơ mà nó vấn đơn giản và giản dị.

Để trình bày tôi chính thức với ví dụ sau:

Chúng ta là ông chủ của nhà hàng, mỗi ngày cứ tới chiều về phải xem lại thông tin tổng kết lợi nhuận của nhà hàng. Và để làm được thư ký của các bạn sẽ phải bắn mail tổng kết mỗi ngày. Tuy nhiên ngày nào chúng ta cũng phải mất công giục chúng ta thư ký phải viết report đúng giờ, rồi lúc thì cần thông tin này lúc thì cần thông tin kia. Nói tóm gọn là công việc của doanh nghiệp rất tùy theo chúng ta thư ký.

Thời hạn sau đó chúng ta rút kinh nghiệm thâm thúy, soạn template, ra quy định về thời hạn report bắt thư ký phải tuân theo. Và sau đó cứ tới chiều là chúng ta xem thông tin tổng kết lợi nhuận của nhà hàng mà không cần thiết phải giục hay phụ thuộc nhiều vào thư ký nữa.

Như vậy sở hữu phải là việc tùy theo chúng ta thư ký đã trở nên đảo ngược đúng không nào? chúng ta thư ký sẽ phải tuân theo những ĐK mà chúng ta qui định thay vì như thế chúng ta phải chạy theo và giục thư ký viết report.

Quy trình đảo ngược sự phụ thuộc này trong ứng dụng gọi là nguyên tắc dependency inversion. Module gọi sẽ tìm thấy những phương thức, qui định để dependency module phải tuân theo lúc triển khai 1 tác dụng nào khác của ứng dụng.

Như trong ví dụ trên thì sau lúc ra những qui định trên thì chúng ta thậm chí thay thế bất ký cô thư ký nào miễn là vừa lòng ĐK report đúng theo template và đúng giờ. Nói theo cách khác chúng ta thậm chí inject ngẫu nhiên cô thư ký nào vào công thức xem lại thông tin tổng kết lợi nhuận của nhà hàng.

*

Bao quát thêm chút thì một cô thư ký ngẫu nhiên gọi là 1 trong những sự phụ thuộc (dependency) trong công thức xem lại thông tin tổng kết lợi nhuận của nhà hàng.

Công thức mà injectDependency trên gọi là Dependency Injection.

Những đối tượng người sử dụng trong việc injection này bao hàm :

Đối tượng người tiêu dùng cần inject: thư ký.Lỗ hổng: những quy định về template, ngày giờ report dành cho một thư ký ngẫu nhiên.Công thức sẵn sở hữu: việc xem lại thông tin tổng kết lợi nhuận của nhà hàng.

Thế còn về Software enginering thì sao? Thật ra công thức nó vãn như trên. Trong một phần mềm thì thường được thiết kế phân thành nhiều những thành phần nhỏ gọi là những module/class. Những module/class thường sẽ gọi nhau để triển khai 1 tác dụng của ứng dụng.

Ví dụ: như lúc người sử dụng login vào website này ví dụ điển hình thì thường sẽ sở hữu được ít nhất 2 module sau gọi nhau bao hàm:

Module chính (làm trách nhiệm login, xác thực username/password).Module truy nhập vào trung tâm dữ liệu.

Module chính sẽ gọi tới module truy nhập vào trung tâm dữ liệu để lấy username/password rồi kiểm tra sở hữu hơp lệ để login hay là không. Module được gọi tới rõ ràng là module truy nhập vào trung tâm dữ liệu thì gọi là 1dependency module hay còn dịch là module phụ thuộc của module chính.Dependency Injection là công thức inject bất kỳdependency module khác vào công thức gọi tới nó.

Để làm được điều đó như những đã trình bày về công thức injection trong phần I thì để thực hiên được sẽ cần phải có 1 mẫu “lỗ” hổng, để tạo ra lỗ hổng này sẽ cần dựa trên nguyên tắc dependency inversion (sự đảo ngược phụ thuộc) trong software design.

Rõ ràng lỗ hổng được tạo ra ở trên đây là những phương thức, qui định mà dependency module nên phải hỗ trợ cho công thức gọi tới nó. Trong software design thì gọi là interface qui định những phương thức giữa 2 module.

Ví dụ như trong công thức login, dependency module sẽ cần hỗ trợ cácinteface bao hàm phương thức để kiểm tra username, password trong database.

Những đối tượng người sử dụng trong việc injection của công thức login bao hàm :

Đối tượng người tiêu dùng cần inject : dependency module mà truy nhập vào trung tâm dữ liệu.Lỗ hổng :inteface qui định những phương thức màdependency module phải follow và hỗ trợ (dựa trên công thức Dependency Inversion đã nói ở trên)Công thức sẵn sở hữu : công thức login vào khối hệ thống.

Xem thêm: xinh lao

Tóm lại

Công thức Dependency Injection này rất sở hữu ý nghĩa trong việc phát triển ứng dụng khai mà những đội trong dự án công trình phát triển tuy nhiên tuy nhiên những module, unit test hoặc việc gia hạn thay đổi, mở bát ngát source code của module này nhưng vẫn không bị tác động tới module khác.

Như tôi đã ví dụ cho trường hợp sếp và thư ký ở trên thì chúng ta thậm chí thấy cơ Dependency Injection này rất sở hữu ý nghĩa trong cả trong đời sống phải ko?

Luận điểm Dependency Injection này vẫn đơn giản và giản dị như việc tiêm thuốc đúng không nào?

Nếu hiểu rồi thì nhớ lượt thích và share nhé để tôi còn tồn tại động lực viết những blog khác 🙂

Về Viettingame.com

Viettingame.com - Chuyên trang web tổng hợp những thông tin hữu ích trên internet như thông tin về game, tin tổng hợp
Xem tất cả các bài viết của Viettingame.com →

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *