THẢO LUẬN

@Clarence161095 DDoS cũng đâu cứ phải dùng http. Nó ping không cũng tèo mà ^^

+1

Tùy chương trình đào tạo ra là kĩ sư hay cử nhân thôi. Nên việc bạn tốt nghiệp cử nhân hay kỹ sư thì không khác biệt quá nhiều. Quan trọng trong quá trình học thì em học được những gì, làm được những gì, tích lũy kinh nghiệm để ra trường kiếm được việc làm.

0

Xin cảm ơn, tôi đã cài harbor thành công

0

chúc bạn tìm ra con đường cho riêng mình, 😊

0

Bài viết hay quá. Mình bằng tuổi bạn, cũng k58 BK, nhưng cuộc đời bị trật vài nhịp. Mình đang làm thuần FE, đang muốn phát triển kỹ năng thêm. Mình đã đọc hết bài viết, như cơn mưa rào giải hạn. Cảm ơn những chia sẻ của bạn nha

0
thg 6 26, 2024 3:19 SA

bai viet rat tuyet

0
thg 6 26, 2024 3:00 SA

👍️

0
thg 6 26, 2024 2:13 SA

series này không tiếp tục nữa à b :<

0
thg 6 26, 2024 2:09 SA

Hiện tại có rất nhiều giải pháp, nhưng mình đang dùng Sider AI và thấy khá hài lòng. Bạn có thể tương tác trực tiếp với AI và đặt các câu hỏi về nội dung của trang web luôn (mình ví dụ như hình bên dưới)

image.png

Hi vọng nó giúp được bạn

0
thg 6 26, 2024 1:21 SA

một bài chi tiết cho vấn đề mà có thể nhiều người sẽ ko để ý tới, quá hay

0
thg 6 25, 2024 10:50 CH

he 😃

0

Làm thế nào mà máy tính có thể phân biệt được một file là image hay text ? Trending how-to-detect-file-format.png

Đặt vấn đề Máy tính làm thế nào để biết file nào là ảnh, file nào là văn bản?

Nhìn qua câu hỏi thì có vẻ đơn giản, chẳng phải mỗi file điều có đuôi extension sao, dựa vào đó mà phân biệt thôi.

Image thì sẽ có những đuôi như .png, .jpeg,… Text thì sẽ có những .txt… Thế bạn đã bao giờ tải nhầm một file ảnh có đuôi .txt mà không thể mở nó chưa? Và với tư cách là một lập trình viên, tôi còn có thêm một số câu hỏi

Nếu file đó không có phần đuôi extension thì sao ? Nếu người dùng chỉnh sửa đuôi của file ảnh thành file .txt thì khi upload lên server thì sao ? Có nhiều vấn đề để chúng ta tìm hiểu hơn rồi đó phải không? Cùng mình khám phá nha!

Đơn giản mà nói thì đuôi extension không quyết định loại của file đó Thật vậy, một file có thể không có đuôi extension và nếu có, cũng chưa chắc đuôi extension đó thể hiện đúng loại file.

Mức độ quan trọng của đuôi extension cũng tuỳ vào hệ điều hành.

(optional) Nhìn chung thì hệ điều hành như linux sẽ chẳng quan tâm đuôi extension của file đâu, thay vào đó cứ file nào executable được là nó chạy à, nó sẽ nhìn vào header file, nội dung file để tìm kiếm những application phù hợp để thực thi file đó. Ví dụ những file có dòng đầu là #!/bin/bash

Cái này gọi là shebang, đây là một cách đặc biệt để nói với hệ điều hành rằng bạn muốn mở file này bằng program nào.

(mandatory) Còn một vài hệ điều hành hướng đến sự thuận tiện cho người dùng như Window thì đuôi extension sẽ có nhiều đất diễn hơn. File association (Registry): dựa vào đuôi extension, Window sẽ liên kết với các application cụ thể, và dùng application đó để mở file. Default programs: Window cũng cho phép bạn tuỳ chỉnh, với đuôi extension này thì sẽ được mở với application kia. Magic number là gì ? Đầu tiên, ta cần hình dung các file trông như thế nào, nó sẽ được lưu dưới dạng nhị phân như sau

0100 0111 0100 1001 0100 0110 ....

Thường thì phần đầu của file sẽ có những chuỗi byte đặc biệt, ta gọi nó là Magic number giúp các application chuyên dụng phân biệt được file đó là gì.

Cùng nhìn thêm 1 ví dụ về file PNG bên dưới nhá, sau khi xác định được file đó là gì thì phía sau chúng ta sẽ có các metadata khác nữa, cái metadata dài như thế nào, chứa cái gì thì sẽ tuỳ vào loại file đó.

Untitled.png

💡 Metadata là dữ liệu mô tả thông tin chi tiết về dữ liệu, như phía trên thì là dữ liệu để mô tả cái file là ảnh và có những đặc tính gì.

Ví dụ về magic numbers của một vài file:

PNG: 89 50 4E 47 0D 0A 1A 0A JPEG: FF D8 FF PDF: 25 50 44 46 ZIP: 50 4B 03 04 MIME type là gì ? Định nghĩa này thì chắc hẳn đa số anh em lập trình ta sẽ gặp nhiều.

MIME type (viết tắt của Multipurpose Internet Mail Extensions) là một chuỗi ký tự chuẩn được sử dụng để xác định định dạng của một tệp. Nó gồm hai phần: loại (type) và kiểu con (subtype), được phân tách bằng dấu gạch chéo (/).

Ví dụ:

image/png: Hình ảnh định dạng PNG image/jpeg: Hình ảnh định dạng JPEG text/plain: Văn bản thuần túy application/pdf: Tài liệu PDF video/mp4: Video định dạng MP4 Cách hoạt động:

Khi bạn mở một tệp trên máy tính, hệ điều hành sẽ kiểm tra MIME type của tệp đó (thường được xác định dựa trên phần đuôi extension hoặc magic number) để tìm ứng dụng phù hợp để mở tệp. Tương tự, khi trình duyệt web tải xuống một tệp, nó sẽ xem MIME type để xác định cách xử lý tệp đó (hiển thị trực tiếp trong trình duyệt, tải xuống, hoặc mở bằng ứng dụng khác).

Tìm kiếm MIME type:

Bạn có thể tìm thấy danh sách đầy đủ các MIME type được IANA (Internet Assigned Numbers Authority) công nhận trên trang web của họ hoặc trên các nguồn khác như MDN Web Docs:

https://www.iana.org/assignments/media-types/media-types.xhtml https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types Bonus - Validate file Validate file input là một tiến trình phức tạp, không có một phương pháp đơn lẽ nào hiệu quả! Chúng ta cần phải kết hợp nhiều phương thức lại với nhau.

Với những gì đã học được phía trên, khi kiểm tra định dạng của 1 file, chúng ta không chỉ nên kiểm tra đuôi extension, vì nó rất dễ bị bypass.

Kiểm tra MIME type sẽ đáng tin cậy hơn, những vẫn có lỗ hỏng.

Một request upload file thường sẽ có header chứa trường Content-Type để xác định MIME type của file đó. Kẻ tấn công có thể chỉnh sửa trường này, nên bạn hãy cẩn thận.

💡 Tôi đã thử kiểm tra thư viện multer, nó xài một thư viện là busboy, và việc check mimeType hoàn toàn dựa vào trường Content-Type

Kiểm tra header file, cụ thể là phần magic number hay file signature, sau đó so sánh với danh sách những loại đáng tin cậy đã được công khai ở những link dưới đây, nếu không có trong đó thì quăng ra lỗi.

https://en.wikipedia.org/wiki/List_of_file_signatures https://en.wikipedia.org/wiki/Magic_number_(programming) https://gist.github.com/leommoore/f9e57ba2aa4bf197ebc5 Cuối cùng chính là kiểm tra nội dung file, dùng các phần mềm antivirus or anti-malware để quét toàn bộ nội dung file, lỗi bỏ các file độc hại.

Kết bài Tóm lại, việc xác định loại file không chỉ đơn thuần dựa vào đuôi extension mà là sự kết hợp của nhiều yếu tố như hệ điều hành, magic number và MIME type. Hiểu được chúng, bạn sẽ có thể xử lý file một cách chính xác và an toàn hơn.

Hy vọng bài viết này đã cung cấp cho bạn những kiến thức hữu ích về vấn đề này. Nếu bạn có bất kỳ câu hỏi hoặc góp ý nào, đừng ngần ngại để lại bình luận bên dưới!

Nguồn tham khảo https://www.linkedin.com/advice/1/how-do-you-validate-file-types-sizes-before https://en.wikipedia.org/wiki/Magic_number_(programming)

0

hơi ngoài blog xíu, e muốn hỏi là có con api bot nào có thể tích hợp vào web để tự sinh ra title, description, slug,... theo quy chuẩn mình câu hình và content đầu vào không ah

0
thg 6 25, 2024 3:28 CH

Cảm ơn bạn đã đọc bài nhé 🫶

0
Avatar
đã bình luận cho bài viết
thg 6 25, 2024 1:54 CH

tác giả copy vào google dịch à 😦

0
thg 6 25, 2024 11:28 SA

Cảm ơn bác nhiều, đang định implement cái này. Được hướng dẫn chi tiết như vậy quá tuyệt vời.

+1
thg 6 25, 2024 10:20 SA

Code ở mục 1 vẫn work mà nhỉ, bạn có thể giải thích kĩ hơn không?

+1
thg 6 25, 2024 5:26 SA

hay đó bro 😁

0
thg 6 25, 2024 5:10 SA

Cái ý thường xuyên đi phỏng vấn dù có ý định nghỉ việc hay không này thật sự lần đầu mình đọc được. Nhưng ngẫm thì cũng đúng vì nếu đi PV mình cũng tự định lượng được bản thân của mình đang ở mức nào và những câu hỏi của nhà tuyển dụng còn có câu nào mình ko trả lời được chả hạn thì cũng là kiến thức mình hổng cần update thêm. Cảm ơn ad nhé

0
thg 6 25, 2024 5:05 SA

Cảm ơn b, bài viết rất hay và phân tích cực kỳ chi tiết

0
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí