Tìm kiếm trang web

php - Tại sao lại sử dụng tên tệp CSS và Javascript được băm?


Khi xem kỹ mã của một số trang web phổ biến nhất, tôi đã nhiều lần thấy rằng, tên tệp CSS và JavaScript như thế này,

<link type="text/css" rel="stylesheet" href="//sample.com/css/css__k3sYInttBtNNuJgtPSyqaYy9vVxS4qTZLrfs1ujQB9g__SH_QaIH3bnSp3nOw8n8afhszfHJlxVt51qRlrrrOnk0__fBOuweRojwN82z7EY4v-sVsMwU_P_vZSaU3fmyho6Do.css" media="all" />

<script type="text/javascript" src="//sample.com/js/js__-V23Vc4PVahQcqfyxss_rmNogErBARnPCvI7oPXC0qQ__O-yO5Gg8pRRaefl4d0X9qXUJTOSHq0yazxF-4tJCU_k__fBOuweRojwN82z7EY4v-sVsMwU_P_vZSaU3fmyho6Do.js"></script>

Có vẻ như tên tệp đã được mã hóa băm và tôi không biết lý do là gì. Vì vậy, tôi đã gặp những vấn đề sau.

  1. Mục đích của việc sử dụng phương pháp kiểu này là gì?

  2. Tôi cũng đã thấy Tên thư mục rất phức tạp. Tại sao lại như vậy?

  3. Có vấn đề gì về an ninh không?

  4. Chúng ta có thể thay đổi tên tệp/thư mục một cách động bằng PHP để đảm bảo an ninh tối đa không?

Tôi hơi mới với khu vực này.

Câu trả lời #1

Bạn có thể cho rằng những tên tệp/thư mục này không phải là những gì các nhà phát triển đang làm việc trong giai đoạn phát triển, mà đúng hơn là một sản phẩm của quá trình xây dựng các tệp. JavaScript và CSS thường được xây dựng thành một tệp duy nhất từ nhiều tệp nguồn, liên quan đến nhiều hoặc ít bước biên dịch/chuyển dịch và gộp tệp.

Lý do bạn muốn tên tệp bao gồm một mã băm của tệp là vì điều này buộc việc làm mới bộ nhớ đệm mỗi khi tệp thay đổi. Các tệp tĩnh có thể được lưu trong bộ nhớ đệm bởi trình duyệt, máy chủ và một số tác nhân khác ở giữa. Điều này là ổn miễn là tệp không thay đổi. Tuy nhiên, khi một phiên bản mới được phát hành, người dùng nên được phục vụ phiên bản mới này. Nếu tên tệp của tài nguyên thay đổi, trình duyệt sẽ luôn yêu cầu phiên bản mới của tệp từ máy chủ, thay vì sử dụng phiên bản đã được lưu trong bộ nhớ đệm.

Bạn không nên dựa vào các tên tệp phức tạp như thế này như một tính năng bảo mật/ủy quyền. Các tên tệp được tham chiếu trong tệp chỉ mục của ứng dụng và do đó người dùng cuối có thể biết được. Ngoài ra, bảo mật dựa trên sự mơ hồ thường là một ý tưởng tồi.