HTML và Javascript được diễn giải trên client side. Đối với mục đích đăng nhập, đó là mã phía máy chủ thường được sử dụng để xác minh thông tin xác thực - đơn giản vì thực tế bạn đã biết - với việc triển khai phía máy khách đơn giản, bạn có thể thấy thông tin xác thực trong mã nguồn, phía máy chủ cũng dễ dàng hơn để làm việc với, một khi bạn hiểu nó, nó là linh hoạt hơn để phát triển hơn nữa, nó là an toàn hơn, và nó thực sự được sử dụng ở khắp mọi nơi cho nhiệm vụ này.
Bạn nên sử dụng PHP, ASP, Ruby (hoặc bất kỳ ngôn ngữ server side nào khác) cho việc này. Nếu bạn không muốn điều đó, bạn cần làm cho người dùng khó đọc thông tin đăng nhập từ mã nguồn.
Để thực hiện điều đó, bạn có thể sử dụng các phương pháp khác nhau như mật mã hoặc obfuscation. Mật mã là rất khuyến khích hơn obfuscating vì nó provably thêm bảo mật hơn cho ứng dụng của bạn. Obfuscating về cơ bản có nghĩa là bạn thay đổi mã nguồn theo cách mà nó khó đọc - bạn thêm các chức năng mã hóa các chuỗi, để "mật khẩu" của bạn không thể được phát hiện ngay từ cái nhìn đầu tiên. Tuy nhiên, obfuscation luôn luôn có thể được bỏ qua, và thường khá dễ dàng với một công cụ gỡ lỗi tốt.
Vì vậy, chúng ta hãy đi với mật mã. Những gì bạn đang tìm kiếm ở đây đang sử dụng one way hash functions. Bạn có nhiều lựa chọn - MD5, SHA1, SHA256, ... mỗi loại cung cấp mức bảo mật khác nhau. SHA256 implementation in Javascript là ví dụ bạn có thể sử dụng. Có rất nhiều thư viện và ví dụ khác cho việc này, vì vậy, chỉ cần sử dụng Google và tìm một ví dụ mà bạn thích.
Bây giờ, phải làm gì với ứng dụng này? Giả sử bạn có hàm sha256() chấp nhận một chuỗi và trả về giá trị băm của nó dưới dạng một chuỗi.Đối với mỗi người dùng và mật khẩu bạn có, bạn đặt trước mã băm SHA256 của chuỗi "user + password".
Giả sử bạn muốn tên người dùng của mình là "Pedro" và mật khẩu cho tài khoản này là "MyPassword".
Bạn đặt trước mã băm của "PedroMyPassword" - ví dụ: với with online hashing tool. Bạn có thể thấy hàm băm SHA256 của nó là
40be6e939eedf018b2b846e027067dcb006585a2155ce324f1f2a6a71d418b21
Mã băm này là những gì bạn đưa vào mã Javascript của mình.
Khi người dùng nhập người dùng và mật khẩu của họ, bạn gọi hàm sha256 của bạn trên "tên người dùng + mật khẩu" và bạn so sánh nó với hàm băm được đặt trước của bạn.
Lưu ý rằng bạn phải chọn mật khẩu thực sự mạnh, nếu không các cuộc tấn công nhất định (như tấn công từ điển) sẽ dễ sử dụng để bẻ khóa băm của bạn.
Vấn đề hiện tại là bạn không chỉ định, bạn muốn làm gì tiếp theo. Ví dụ: bạn có thể muốn chuyển hướng người dùng đã được xác thực đến trang tiếp theo, nhưng ở đây bạn lại gặp phải vấn đề tương tự - nếu bạn chuyển hướng trong Javascript sang "secondpage.html" trong mã của mình, ai đó có thể bỏ qua xác thực và điều hướng đến thứ hai này trang trực tiếp.
Những gì bạn có thể làm trong trường hợp này là bạn đặt tên cho trang thứ hai của bạn như
40be6e939eedf018b2b846e027067dcb006585a2155ce324f1f2a6a71d418b21.html
ví dụ: các hash của người dùng của bạn + đường chuyền chuỗi. Trong biến thể này, bạn không đặt hàm băm trong mã. Máy chủ web sẽ chỉ trả về lỗi 404 cho tất cả người dùng không xác thực được. Ví dụ, nếu ai đó cố gắng sử dụng "Pedro" với "123456" là mật khẩu, SHA256 sẽ
3bac31720fdd4619ebe2e8865ccc0dc87eb744f3f05f08c628bb9217a77e4517
và nếu bạn chuyển hướng họ đến
3bac31720fdd4619ebe2e8865ccc0dc87eb744f3f05f08c628bb9217a77e4517.html
nó đã giành không tồn tại, vì tệp trang thứ hai của bạn được gọi là
40be6e939eedf018b2b846e027067dcb006585a2155ce324f1f2a6a71d418b21.html
Bạn sẽ cần phải tạo các trang thứ hai này cho mỗi kết hợp người dùng/vượt qua. Sau đó bạn có thể đặt một mã chuyển hướng đơn giản vào trang thứ hai thực sự.
Nhưng chắc chắn rằng bạn đang sử dụng giao thức HTTPS, nếu không, các trang thứ hai sẽ đi qua các dây không được mã hóa ...
này tất cả sẽ làm việc, nhưng vẫn còn, tôi đánh giá cao đề nghị, bạn xem xét các cách phía máy chủ.
vui lòng cung cấp mô tả sự cố thích hợp – arch
Tôi nghĩ bạn đã không nhận được câu hỏi của tôi. Nếu ai đó xem nguồn trang, anh ấy có thể dễ dàng kiểm tra tên người dùng và mật khẩu nào. Tôi không muốn vị vua này của trang – user007
Chỉ cần đặt tập lệnh java trong một tệp javascript mới có tên là login.js và sau đó khi nào chức năng vaidate được gọi là các giá trị được gửi đến tập lệnh java. sau đó tập lệnh java không được hiển thị trong mã nguồn –