ABCDEFGHIJKLMNOPQRSTUVWXYZ
1
2
3
N/A
4
Fail
5
Pass
6
No.Work ContentStatusNote
7
1FileVới tính năng upload file thì cẩn thận những dòng lệnh độc hại tiêm nhiễm vào máy chủ. Giải pháp:
- Mọi file tải lên website được lưu trữ trong một thư mục bên ngoài webroot hoặc trong cơ sở dữ liệu dưới dạng blob hoặc lưu trữ trên Cloud Storage
- Chặn hoàn toàn quyền truy cập trực tiếp vào các file được tải lên.
8
2Kiểm tra định dạng file hợp lệ tốt nhất không sử dụng bad practice:
- Chỉ check mỗi đuôi file (extension)
- Chỉ check tới header minetype file
Thay vào đó định dạng bằng kỹ thuật bổ sung là check Magic Numbers,
Thay vào đó chúng ta cần một kỹ thuật bổ sung là check Magic Numbers, hay còn được biết đến với tên khác là File Signatures. Đặc biệt kỹ thuật này phù hợp cho cả check file upload hoặc download từ nơi khác.
Kỹ thuật này đại khái là chúng ta sẽ đọc file content, nhưng chỉ một phần nhỏ, tầm 512 - 2048 bytes đầu tiên. Các thể loại file khác nhau đều có những dấu hiệu nhận biết riêng: Magic Numbers.
Hiện chúng ta đã có rất nhiều thư viện hỗ check Magic Number rất rất nhanh.
Danh sách File Signatures phổ biến: https://www.garykessler.net/library/file_sigs.html
Thư viện check với Node: https://www.npmjs.com/package/file-type
Thư việc check với Golang: https://github.com/gabriel-vasile/mimetype
9
3Upload File, nếu có thể nên áp dụng PresignURL để:
- Tăng performance về thời gian
- Giảm cost về băng thông khi không phải tốn qua 1 bước trung gian
10
4
11
5
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100