Bằng cách áp dụng thuật toán băm vào mật khẩu người dùng của bạn trước khi lưu trữ chúng trong cơ sở dữ liệu của bạn, bạn không thể xác định được mật khẩu ban đầu, trong khi vẫn có thể so sánh Hash kết quả với mật khẩu ban đầu trong tương lai. Muối mật mã là một dữ liệu được áp dụng trong quá trình băm để loại bỏ khả năng đầu ra được tra cứu trong một danh sách các cặp băm được tính toán sẵn và đầu vào của chúng. Về cơ bản, muối PHP và băm là các công cụ mật mã giúp bảo mật trang web của bạn đăng nhập. & NBSP; Show
Hướng dẫn liên quan - Hướng dẫn toàn diện về bảo mật PHP Tại sao bạn nên băm mật khẩuMật khẩu băm là một trong những thực hành bảo mật cơ bản nhất phải được tuân thủ khi bạn có kế hoạch chấp nhận mật khẩu. Không có băm, bất kỳ mật khẩu nào được lưu trữ trong cơ sở dữ liệu của bạn có thể bị đánh cắp nếu cơ sở dữ liệu bị xâm phạm và sau đó chúng có thể được sử dụng ngay lập tức để thỏa hiệp không chỉ ứng dụng của bạn mà cả tài khoản của người dùng trên các dịch vụ khác nếu chúng sử dụng cùng một mật khẩu ở nơi khác. & NBSP ; Tuy nhiên, điều quan trọng là phải bảo mật trang web của bạn theo những cách khác, vì việc băm chỉ bảo vệ mật khẩu khỏi bị xâm phạm trong cơ sở dữ liệu của bạn, nhưng không nhất thiết phải bảo vệ chúng khỏi bị chặn bởi phần mềm độc hại hoặc tin tặc. & NBSP; Hướng dẫn liên quan - Các vấn đề bảo mật PHP Cách bạn nên băm mật khẩuNên sử dụng một trong hai phương pháp sau đây để băm mật khẩu của bạn:
Lưu ý: Bạn nên sử dụng API băm mật khẩu gốc với hàm Crypt () để ngăn chặn các cuộc tấn công thời gian tự động. & NBSP; It is strongly recommended that you use the native password hashing API with the crypt() function in order to prevent timing attacks automatically. Cách bạn nên làm và lưu trữ muốiTrong các thuật ngữ cơ bản nhất, một muối là một chút dữ liệu ngẫu nhiên được thêm vào cuối mật khẩu để làm cho hàm băm của bạn khó đảo ngược, do đó bảo vệ mật khẩu. Mặc dù có rất nhiều máy phát muối có sẵn trực tuyến, bạn có thể sử dụng password_hash () để tạo một loại muối ngẫu nhiên - đây là cách tiếp cận dễ nhất. & NBSP; Giá trị trả về của phương pháp băm bạn đã chọn bao gồm muối như là một phần của băm được tạo. Đây là giá trị bạn nên lưu trữ trong cơ sở dữ liệu của mình, vì nó bao gồm thông tin về hàm băm đã được sử dụng và sau đó có thể được sử dụng để khớp với mật khẩu và xác thực các lần thử đăng nhập. & NBSP; Hướng dẫn liên quan - Hướng dẫn loại bỏ phần mềm php & phần mềm độc hại Kết luận: muối và băm phpMật khẩu được mã hóa khó hack hơn một mật khẩu mà không, và bằng cách băm mật khẩu trong trang web PHP của bạn, bạn làm cho một hacker khó tấn công bạn hơn. Các cuộc tấn công trên mạng là khủng khiếp, và hậu quả của họ đối với lưu lượng, doanh thu và thậm chí là danh tiếng của bạn. Vì vậy, để ngăn chặn bị tấn công, nên đầu tư vào bảo mật và tuân theo các hoạt động bảo mật tốt như sử dụng muối và băm PHP - một chút về phía bạn có thể đi một chặng đường dài! Về AstraTại Astra, chúng tôi có một nhóm các chuyên gia bảo mật hàng ngày giúp chủ sở hữu trang web và nhà phát triển bảo mật trang web của họ khỏi những kẻ tấn công. Tường lửa thông minh của chúng tôi cung cấp bảo mật 24 × 7 thời gian thực chống lại các bot xấu, tin tặc, phần mềm độc hại, XSS, SQLI và 80+ cuộc tấn công. Astra Firewall được điều chỉnh cao cho các trang web và CMS dựa trên PHP như WordPress, Prestashop, Opencart & Magento để cung cấp bảo mật toàn diện cho trang web của bạn. Xem Tường lửa thông minh và máy quét phần mềm độc hại của chúng tôi hoạt động in actionDừng các bot xấu, SQLI, RCE, XSS, CSRF, RFI/LFI và hàng ngàn cuộc tấn công mạng và các nỗ lực hack. Sreenidhi Sreenidhi là một người đam mê công nghệ, thích viết về an ninh mạng và khoa học dữ liệu. Các lĩnh vực quan tâm của cô bao gồm bảo mật WordPress, phần mềm độc hại mới và tin tức an ninh mạng gần đây.
TL;DRDon'ts
Dos
Tại sao dù sao cũng là mật khẩu?Mục tiêu đằng sau mật khẩu băm rất đơn giản: Ngăn chặn quyền truy cập độc hại vào tài khoản người dùng bằng cách thỏa hiệp cơ sở dữ liệu. Vì vậy, mục tiêu của mật khẩu băm là để ngăn chặn một hacker hoặc cracker bằng cách tiêu tốn của chúng quá nhiều thời gian hoặc tiền bạc để tính toán mật khẩu văn bản đơn giản. Và thời gian/chi phí là những răn đe tốt nhất trong kho vũ khí của bạn. Một lý do khác mà bạn muốn một hàm băm tốt, mạnh mẽ trên tài khoản người dùng là cho bạn đủ thời gian để thay đổi tất cả các mật khẩu trong hệ thống. Nếu cơ sở dữ liệu của bạn bị xâm phạm, bạn sẽ cần đủ thời gian để ít nhất khóa hệ thống, nếu không thay đổi mọi mật khẩu trong cơ sở dữ liệu. Jeremiah Grossman, CTO của Whitehat Security, đã tuyên bố trên blog bảo mật của White Hat sau khi phục hồi mật khẩu gần đây yêu cầu phá vỡ lực lượng bảo vệ mật khẩu của anh ta:
(Nhấn mạnh của tôi.) Điều gì tạo ra một mật khẩu tốt dù sao?Sự hỗn loạn. (Không phải là tôi hoàn toàn đăng ký vào quan điểm của Randall.) Nói tóm lại, Entropy là bao nhiêu biến thể trong mật khẩu. Khi mật khẩu chỉ là chữ thường của La Mã, đó chỉ là 26 ký tự. Đó không phải là nhiều biến thể. Mật khẩu Alpha-Numeric tốt hơn, với 36 ký tự. Nhưng cho phép trên và chữ thường, với các ký hiệu, là khoảng 96 ký tự. Đó là tốt hơn rất nhiều so với chỉ các chữ cái. Một vấn đề là, để làm cho mật khẩu của chúng tôi trở nên đáng nhớ, chúng tôi chèn các mẫu mà làm giảm entropy. Ối! Mật khẩu entropy dễ dàng xấp xỉ. Sử dụng toàn bộ các ký tự ASCII (khoảng 96 ký tự có thể đánh máy) mang lại entropy 6,6 mỗi ký tự, ở mức 8 ký tự cho mật khẩu vẫn còn quá thấp (52,679 bit entropy) cho bảo mật trong tương lai. Nhưng tin tốt là: mật khẩu dài hơn và mật khẩu với các ký tự Unicode, thực sự làm tăng entropy của mật khẩu và làm cho nó khó bị bẻ khóa hơn. Có một cuộc thảo luận dài hơn về entropy mật khẩu trên trang web Crypto Stackexchange. Một tìm kiếm tốt của Google cũng sẽ làm nổi bật rất nhiều kết quả. Trong các ý kiến tôi đã nói chuyện với @PopNoodles, người đã chỉ ra rằng việc thực thi chính sách mật khẩu có độ dài x với x nhiều chữ cái, số, ký hiệu, v.v., thực sự có thể giảm entropy bằng cách làm cho sơ đồ mật khẩu dễ dự đoán hơn. Tôi thực sự đồng ý. Ngẫu nhiên, thực sự ngẫu nhiên nhất có thể, luôn là giải pháp an toàn nhất nhưng ít đáng nhớ nhất. Cho đến nay, tôi đã có thể nói, làm cho mật khẩu tốt nhất thế giới là một Catch-22. Nó không đáng nhớ, quá dễ đoán, quá ngắn, quá nhiều ký tự Unicode (khó gõ trên Windows/thiết bị di động), quá dài, v.v. Không có mật khẩu nào thực sự đủ tốt cho mục đích của chúng tôi, vì vậy chúng tôi phải bảo vệ chúng như thể chúng đã ở Fort Knox. Thực hành tốt nhấtBCrypt và Scrypt là những thực tiễn tốt nhất hiện tại. Scrypt sẽ tốt hơn so với BCRYPT theo thời gian, nhưng nó đã không xem việc áp dụng như một tiêu chuẩn của Linux/UNIX hoặc bởi các máy chủ web, và chưa có đánh giá chuyên sâu về thuật toán của nó được đăng. Tuy nhiên, tương lai của thuật toán trông có vẻ đầy hứa hẹn. Nếu bạn đang làm việc với Ruby, có một viên đá quý sẽ giúp bạn ra ngoài và Node.js hiện có gói Scrypt của riêng mình. Bạn có thể sử dụng Scrypt trong PHP thông qua tiện ích mở rộng Scrypt hoặc tiện ích mở rộng libsodium (cả hai đều có sẵn trong PECL). Tôi thực sự khuyên bạn nên đọc tài liệu cho chức năng Crypt nếu bạn muốn hiểu cách sử dụng BCRYPT hoặc tìm cho mình một trình bao bọc tốt hoặc sử dụng một cái gì đó như Phpass để triển khai kế thừa hơn. Tôi đề nghị tối thiểu 12 vòng bcrypt, nếu không phải là 15 đến 18. Tôi đã thay đổi suy nghĩ về việc sử dụng bcrypt khi tôi biết rằng bcrypt chỉ sử dụng lịch trình chính của blowfish, với một cơ chế chi phí thay đổi. Loại thứ hai cho phép bạn tăng chi phí cho Brute-Force Mật khẩu bằng cách tăng lịch trình chính đã tốn kém của Blowfish. Thực hành trung bìnhTôi gần như không thể tưởng tượng được tình huống này nữa. PHPass hỗ trợ Php 3.0,18 đến 5.3, do đó, có thể sử dụng trên hầu hết mọi cài đặt có thể tưởng tượng được và nên được sử dụng nếu bạn không biết chắc chắn rằng môi trường của bạn hỗ trợ BCRYPT. Nhưng giả sử rằng bạn không thể sử dụng bcrypt hoặc phpass. Cái gì sau đó? Hãy thử triển khai PDKBF2 với số lượng vòng tối đa mà môi trường/ứng dụng/nhận thức của người dùng của bạn có thể chịu đựng được. Số thấp nhất tôi đề xuất là 2500 vòng. Ngoài ra, hãy đảm bảo sử dụng hash_hmac () nếu nó có sẵn để làm cho hoạt động khó tái tạo hơn. Thực hành trong tương laiĐến trong Php 5.5 là một thư viện bảo vệ mật khẩu đầy đủ, tóm tắt mọi nỗi đau khi làm việc với BCRYPT. Mặc dù hầu hết chúng ta đều bị mắc kẹt với PHP 5.2 và 5.3 trong hầu hết các môi trường phổ biến, đặc biệt là các máy chủ được chia sẻ, @ircmaxell đã xây dựng một lớp tương thích cho API sắp tới tương thích với Php 5.3.7. Tóm tắt & Tuyên bố miễn trừ tiền mật.Sức mạnh tính toán cần thiết để thực sự bẻ khóa mật khẩu băm không tồn tại. Cách duy nhất để máy tính "bẻ khóa" mật khẩu là tạo lại nó và mô phỏng thuật toán băm được sử dụng để bảo mật nó. Tốc độ của băm có liên quan tuyến tính đến khả năng của nó để bị ảnh hưởng. Tệ hơn nữa, hầu hết các thuật toán băm có thể dễ dàng song song để thực hiện nhanh hơn. Đây là lý do tại sao các chương trình tốn kém như BCRYPT và Scrypt rất quan trọng. Bạn không thể thấy trước tất cả các mối đe dọa hoặc con đường tấn công, và vì vậy bạn phải nỗ lực hết sức để bảo vệ người dùng của mình lên phía trước. Nếu bạn không, thì bạn thậm chí có thể bỏ lỡ sự thật rằng bạn đã bị tấn công cho đến khi quá muộn ... và bạn phải chịu trách nhiệm. Để tránh tình huống đó, hành động hoang tưởng để bắt đầu. Tấn công phần mềm của riêng bạn (trong nội bộ) và cố gắng đánh cắp thông tin đăng nhập của người dùng hoặc sửa đổi tài khoản của người dùng khác hoặc truy cập dữ liệu của họ. Nếu bạn không kiểm tra tính bảo mật của hệ thống của mình, thì bạn không thể đổ lỗi cho bất cứ ai trừ chính bạn.up front. If you do not, then you might even miss the fact that you were attacked until it's too late... and you're liable. To avoid that situation, act paranoid to begin with. Attack your own software (internally) and attempt to steal user credentials, or modify other user's accounts or access their data. If you don't test the security of your system, then you cannot blame anyone but yourself. Cuối cùng: Tôi không phải là một nhà mật mã học. Bất cứ điều gì tôi đã nói là ý kiến của tôi, nhưng tôi tình cờ nghĩ rằng nó dựa trên ý thức chung của ol ... và rất nhiều việc đọc. Hãy nhớ rằng, hãy hoang tưởng nhất có thể, làm cho mọi thứ khó xâm nhập nhất có thể, và sau đó, nếu bạn vẫn lo lắng, hãy liên hệ với một hacker mũ trắng hoặc nhà mật mã học để xem những gì họ nói về mã/hệ thống của bạn. Băm và muối là gì?Băm là một quy trình một chiều chuyển đổi mật khẩu thành bản mã bằng thuật toán băm. Mật khẩu băm không thể được giải mã, nhưng một hacker có thể cố gắng đảo ngược thiết kế nó. Mật khẩu muối thêm các ký tự ngẫu nhiên trước hoặc sau khi mật khẩu trước khi băm để làm mờ mật khẩu thực tế.. A hashed password cannot be decrypted, but a hacker can try to reverse engineer it. Password salting adds random characters before or after a password prior to hashing to obfuscate the actual password.
Muối trong PHP là gì?Muối là gì?Một muối mật mã là dữ liệu được áp dụng trong quá trình băm để loại bỏ khả năng đầu ra được tra cứu trong một danh sách các cặp băm được tính toán sẵn và đầu vào của chúng, được gọi là bảng cầu vồng.
Php băm là gì?Hàm băm trong PHP là một phương pháp đặc biệt được xác định trước và được sử dụng để chỉ ra một chuỗi ở dạng giá trị xác định được đo từ các ký tự của chuỗi.Nó phổ biến cho ứng dụng của nó như là một thuật toán mã hóa và là một biểu diễn giá trị chỉ mục cho các mục trong cơ sở dữ liệu.a special method pre-defined and used for indicating a string in the form of a definite value measured from the string's characters. It is popular for its application as an encryption algorithm and as an index value representation for items in the database.
Có phải muối giống như băm không?Băm là hàm một chiều trong đó dữ liệu được ánh xạ tới giá trị có độ dài cố định.Băm chủ yếu được sử dụng để xác thực.Salting là một bước bổ sung trong quá trình băm, thường thấy liên kết với mật khẩu băm, thêm một giá trị bổ sung cho cuối mật khẩu thay đổi giá trị băm được tạo ra.Salting is an additional step during hashing, typically seen in association to hashed passwords, that adds an additional value to the end of the password that changes the hash value produced. |