Các bước "kiểm tra đuôi của file? kiểm tra header của file? kiểm tra trọn bộ nội dung file?" đều có cách giả dạng 1 phiên upload để đưa lên server file mong muốn. Theo em nên kết hợp với việc hạn chế user truy cập trực tiếp vào file vừa upload, điều này có thể dễ dàng thực hiện:
- Dời những file upload sang 1 thư mục không phải là web root (theo ví dụ của anh comale thì web root là public_html)
or
- Hạn chế user truy cập vào upload folder trên web root directory.
or
- Đổi tên file upload bằng 1 chuỗi ngẫu nhiên.
Đây chính là cách mà 1 số code 4rum áp dụng, và ko phải là "or", mà họ dùng "and"
Giả sử trên cấu hình của apache ấn định một root directory là /home/abc/public_html và cho phép các file .php thuộc directory và sub-directory này được chạy. Giả sử một sub-directory có tên là "uploads" (chẳng hạn) cho phép người dùng attach files (upload file lên). Xuyên qua cơ chế upload này, kẻ tấn công có thể upload php files, jpg file có nhúng php... vậy:
- Làm sao vẫn cho phép file upload nhưng bảo đảm bảo mật?
- Có bao nhiêu cách kiểm soát và hạn chế?
- Kiểm soát và hạn chế chúng ở những mức độ nào?
Chào anh, trong cơ chế upload mình chỉ cho upload những file: jpg,gif,zip,pdf,...Ngoài các file này ra thì ko cho upload những ngôn ngữ lập trình khác.
Còn kiểm soát và hạn chế ở những mức độ nào thì...chờ người tiếp theo trả lời giúp vậy .
Ý em là không cho upload những định dạng khác?
Vậy hành động "cho" hoặc "không cho" ở đây dựa vào những yếu tố nào? (kiểm tra đuôi của file? kiểm tra header của file? kiểm tra trọn bộ nội dung file?)
Giả sử vẫn cho họ upload .php file nhưng làm thế nào để đạt được: cho nhưng vẫn bảo mật?
Hãy thử phân tích xem: một file php được parse và hoạt động trên một apache web server cần những điều kiện nào? Nếu rút bỏ hết các điều kiện ấy, liệu file php còn được parse và hoạt động hay không?
Em có ý này:
Code:
RewriteRule ^.php$ .txt
Vẫn cho upload .php file lên nhưng khi chạy thì show hàng ra lun
Vậy hành động "cho" hoặc "không cho" ở đây dựa vào những yếu tố nào? (kiểm tra đuôi của file? kiểm tra header của file? kiểm tra trọn bộ nội dung file?)
Giả sử vẫn cho họ upload .php file nhưng làm thế nào để đạt được: cho nhưng vẫn bảo mật?
Hãy thử phân tích xem: một file php được parse và hoạt động trên một apache web server cần những điều kiện nào? Nếu rút bỏ hết các điều kiện ấy, liệu file php còn được parse và hoạt động hay không?
Chào anh, nếu cho upload một file .php thì có thể em sẽ mã hóa file bằng chuỗi ngẫu nhiên hoặc tên file như cũ nhưng đổi extension của file thành .txt.
Cái này cũng khá là phí công, vì phải dùng script để liên kết đến. Mà như vậy thì bằng chi ta để thư mục Upload vào nơi ko public, và khi đó cũng ko cần phải mã hóa tên file làm gì, vì nó đâu có truy cập trực tiếp dc