Lưu trữ dữ liệu nhạy cảm - Thực tiễn tốt nhất


8

Gần đây tôi đã bắt đầu làm việc trên một dự án cá nhân nơi tôi đang kết nối với cơ sở dữ liệu bằng Java. Điều này khiến tôi suy nghĩ. Tôi phải cung cấp thông tin đăng nhập cho tài khoản cơ sở dữ liệu trên máy chủ DB để truy cập cơ sở dữ liệu. Nhưng nếu tôi cứng mã nó vào thì có thể ai đó sẽ dịch ngược chương trình và trích xuất thông tin đăng nhập đó. Nếu tôi lưu trữ nó trong một tập tin thiết lập bên ngoài thì vấn đề tương tự chỉ tồn tại, họ sẽ dễ dàng lấy được nó hơn. Tôi có thể mã hóa dữ liệu trước khi lưu trữ ở bất kỳ nơi nào nhưng có vẻ như đó không thực sự là một sự cố an toàn và tôi cũng không phải là chuyên gia mã hóa. Vì vậy, một số thực tiễn tốt nhất để lưu trữ dữ liệu thiết lập nhạy cảm cho một chương trình là gì?

Câu trả lời:


10

Một số tùy chọn ở đây:

  • Chạy chương trình Java trong một người dùng miền được cấp quyền truy cập vào cơ sở dữ liệu (hoặc, thay vào đó, lưu trữ thông tin mật khẩu trong một tệp mà người dùng đang chạy chương trình của bạn có thể truy cập được.

  • sử dụng kho lưu trữ khóa, với các hạn chế đối với cả người dùng và phần mềm sẽ sử dụng khóa (chẳng hạn như những gì Mac OS X cung cấp)

  • sử dụng giải pháp mã hóa tiêu chuẩn, với giao diện sẽ yêu cầu nhập mật khẩu mã hóa khi khởi động chương trình (để quản trị viên khởi động chương trình chỉ biết mật khẩu)

  • yêu cầu uid / mật khẩu cho cơ sở dữ liệu phải được nhập khi khởi động chương trình


3

Quy tắc đầu tiên của lưu trữ dữ liệu nhạy cảm là không. Trong trường hợp này, có lẽ bạn nên làm những gì mà mọi hệ thống xác thực thực hiện - cấp cho mỗi người dùng thông tin đăng nhập của riêng họ để bạn không gặp phải vấn đề này. Hoặc các sự cố như "oh, snap, tài khoản cơ sở dữ liệu đã bị xâm nhập. Bây giờ tôi phải tìm ra cách cấp lại mật khẩu này cho mọi người dùng. Bao gồm cả những tài khoản tôi không biết."


2

Không có cách nào để ngăn chặn bất kỳ ai nhận được ứng dụng của bạn học tên người dùng và mật khẩu. Nếu điều đó không được chấp nhận, thì bạn sẽ phải đặt một số phần mềm giữa ứng dụng và cơ sở dữ liệu, giống như một dịch vụ web.


1

Thông thường bạn muốn thử và mã hóa loại thông tin đó. Ví dụ, thông lệ chung với phát triển web trong .NET là mã hóa phần của web.config có chứa các chuỗi kết nối. Một cách khác bạn có thể làm là sử dụng tài khoản domain / windows / os thay vì kết nối trực tiếp. Điều này giúp bạn không mã hóa mật khẩu vào tập tin ứng dụng hoặc cấu hình. Thay vào đó, bạn quản lý các kết nối của mình bằng cách ủy quyền cho người dùng ứng dụng (hoặc tài khoản mà nó chạy bên dưới).


-2

Bạn phải mã hóa ứng dụng của mình để không bị dịch ngược. Tôi không biết các công cụ Java, nhưng chúng chắc chắn tồn tại.

Nhân tiện, bạn nên luôn mã hóa các ứng dụng của mình để đảm bảo an toàn! Sau đó, bạn có thể mã hóa nó nếu bạn muốn.

EDIT: Sau khi nhận xét, tôi sẽ chính xác rằng bạn CÓ THỂ mã hóa ứng dụng của mình, bạn chỉ cần có một công cụ (loại giải mã 'trên đường bay') trên máy của người dùng để chạy ứng dụng được mã hóa. Đây là những gì tôi đã sử dụng với Foxpro và nó có lẽ cũng tồn tại đối với các ngôn ngữ khác. Mặc dù, có thể loại công cụ đó không được sử dụng trong công nghệ gần đây, nhưng nó chắc chắn làm cho ứng dụng của tôi không thể dịch ngược trong khi chạy tốt.

EDIT 2: Một số sản phẩm tôi tìm thấy để mã hóa .NET: http://www.hallogram.com/ezcryptonet/index.html


4
obfuscation! = mã hóa. Những gì bạn đề xuất là không khả thi về mặt kỹ thuật, cũng không tồn tại đối với bất kỳ phần mềm nào. Các chương trình được mã hóa để chúng không thể dịch ngược cũng không thể được thực thi. Các chương trình có thể được thực thi, luôn có thể được dịch ngược
blueberryfields

2
Điều gì ngăn người dùng thu thập đầu ra của bộ giải mã hoặc sửa đổi bộ giải mã?
kevin cline

Từ ngữ của tôi ở đây là sai, nó không giải mã, mà là phiên dịch. Về việc sửa đổi bộ giải mã, tốt, tôi đoán đó có thể là một khả năng. Kiến thức của tôi về subjet không đủ để trả lời về điều đó.
Mathieu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.