2013-08-20 31 views
5

Tôi đọc nhiều bài báo và bài viết về an ninh liên quan đến (lưu ý Comparing input password to stored hashed password in a web app hoặc Why is char[] preferred over String for passwords?Có thể sử dụng char [] thay vì Strings trong Servlet để lưu trữ mật khẩu không?

Kể từ để lấy một giá trị tham số từ yêu cầu sử dụng request.getParameter ("passwordFieldName") trả về một String, là có bất kỳ tùy chọn để lấy một tham số từ yêu cầu như một char []?

+0

bản sao có thể có của [Trong Java, làm cách nào để trích xuất mật khẩu từ tiêu đề HttpServletRequest mà không tạo đối tượng String?] (Http://stackoverflow.com/questions/15016250/in-java-how-do-i- extract-a-password-from-a-httpservletrequest-header-without-ge) – Raedwald

Trả lời

-2

Bạn chỉ có thể sử dụng phương pháp toCharArray các 's String để chuyển đổi nó thành một char[].

String str = request.getParameter("passwordFieldName"); 
char[] pwArr = str.toCharArray(); 

Se e the docs để biết thêm thông tin.

+0

Bạn cũng có thể sử dụng 'getBytes (chuỗi ký tự chuỗi)' để lấy chuỗi dưới dạng một 'byte []'. –

+2

str.toCharArray() trả về mảng ký tự MỚI được phân bổ (xem javadoc), do đó chuỗi mật khẩu Chuỗi sẽ xuất hiện ở bất kỳ đâu trong hệ thống, trong bất kỳ trình phân tích kết xuất/phân đoạn luồng nào, cho đến khi thu thập rác và đó là điều tôi cố gắng tránh –

+0

Tôi tin rằng mật khẩu sẽ có mặt trong mọi trường hợp, vì nó sẽ nằm trong bộ nhớ trong yêu cầu trên máy chủ. Không có vấn đề gì bạn làm, mật khẩu chuỗi sẽ có mặt trong bộ nhớ ở đâu đó. –

0

Rất tiếc, tôi không biết cách nào.

Thông số yêu cầu đã được tải, hy vọng nội bộ là byte được sử dụng lại [] hoặc char []. Nhưng sau đó?

Vì vậy, có lẽ một người nên triển khai lại một chút máy chủ HTTP? Không phải tôi.

Bạn có thể ở phía khách hàng chia mật khẩu trong nhiều biến và mã hóa chúng. Cho dù đó là tốt hơn?

Nếu bạn không tin tưởng nền tảng máy chủ của mình, hãy sử dụng tốt hơn OpenID hoặc xác thực được ủy quyền khác.

Các vấn đề liên quan