Với GNU tar, nó đơn giản
tar -xvf untrusted_file.tar
trong một thư mục trống. GNU tar tự động loại bỏ một /
tên thành viên hàng đầu khi giải nén, trừ khi rõ ràng không được nói khác với --absolute-names
tùy chọn . GNU tar cũng phát hiện khi sử dụng ../
sẽ khiến một tệp được trích xuất bên ngoài thư mục toplevel và đặt các tệp đó vào thư mục toplevel, ví dụ, một thành phần foo/../../bar/qux
sẽ được trích xuất như bar/qux
trong thư mục toplevel chứ không phải bar/qux
trong thư mục cha của toplevel . GNU tar cũng chăm sóc các liên kết tượng trưng chỉ ra bên ngoài thư mục toplevel, ví dụ foo -> ../..
và foo/bar
sẽ không bar
được trích xuất bên ngoài thư mục toplevel.
Lưu ý rằng điều này chỉ áp dụng cho (các phiên bản gần đây của) GNU tar (cũng như một số triển khai khác, ví dụ: * BSD tar và BusyBox tar). Một số thực hiện khác không có sự bảo vệ như vậy.
Do các liên kết tượng trưng, các biện pháp bảo vệ bạn sử dụng sẽ không đủ: kho lưu trữ có thể chứa một liên kết tượng trưng chỉ đến một thư mục bên ngoài cây và trích xuất các tệp trong thư mục đó. Không có cách nào để giải quyết vấn đề đó hoàn toàn dựa trên tên thành viên, bạn cần kiểm tra mục tiêu của các liên kết tượng trưng.
Lưu ý rằng nếu bạn trích xuất vào một thư mục đã chứa các liên kết tượng trưng, bảo đảm có thể không còn được giữ.