Câu hỏi Làm cách nào để giữ an toàn cho cơ sở dữ liệu mySQL?


Tôi sẽ triển khai PHP/mySQL thiết lập để lưu trữ thông tin thẻ tín dụng.

Nó có vẻ như AES_ENCRYPT/AES_DECRYPT là con đường để đi,

nhưng tôi vẫn còn bối rối vào một thời điểm: 

Làm cách nào để giữ khóa mã hóa an toàn?

Hardwiring nó vào kịch bản PHP của tôi (mà sẽ sống trên cùng một máy chủ như db) có vẻ giống như một lỗ hổng bảo mật lớn.

Giải pháp "thực hành tốt nhất" ở đây là gì?


8
2017-09-11 01:31


gốc




Các câu trả lời:


Bạn nên suy nghĩ lâu dài và khó khăn về việc liệu bạn thực sự cần phải giữ CC #. Nếu bạn không có một lý do tuyệt vời, KHÔNG! Mỗi tuần bạn nghe về một số công ty bị xâm phạm và CC # bị đánh cắp. Tất cả những công ty này đã tạo ra một lỗ hổng nghiêm trọng - họ giữ quá nhiều thông tin. Giữ CC # cho đến khi giao dịch bị xóa. Sau đó, xóa nó đi.

Theo như bảo vệ máy chủ, hành động tốt nhất là bảo mật phần cứng và sử dụng ổ cắm hệ thống nội bộ cho MySQL và đảm bảo chặn mọi truy cập mạng đến máy chủ MySQL. Đảm bảo bạn đang sử dụng cả quyền của hệ thống và quyền của MySQL để cho phép ít quyền truy cập khi cần. Đối với một số tập lệnh, bạn có thể xem xét xác thực chỉ ghi. Có thực sự không có phương pháp mã hóa sẽ được foolproof (như bạn sẽ luôn luôn cần phải giải mã, và do đó phải lưu trữ chìa khóa). Đây không phải là để nói rằng bạn không nên - bạn có thể lưu trữ khóa của bạn ở một địa điểm và nếu bạn phát hiện sự thỏa hiệp hệ thống, bạn có thể phá hủy các tập tin và làm cho dữ liệu vô dụng.


14
2017-09-11 01:35



Bingo - không lưu trữ dữ liệu thẻ tín dụng nếu có thể. Xử lý và loại bỏ, đồng thời cho phép một dịch vụ như thỏa thuận PayPal với các giao dịch định kỳ. - ceejayoz
Đối với các trường hợp khi khoản bồi hoàn xảy ra (nghĩa là chủ sở hữu CC tuyên bố rằng giao dịch đã sai), bạn sẽ muốn giữ bốn số cuối của số CC. - BlaM
Có lẽ cũng có 6 chữ số đầu tiên vì lý do thống kê. 6 đầu tiên xác định ngân hàng phát hành, vì vậy bạn có thể thấy nếu có rất nhiều giao dịch gian lận từ một ngân hàng, vì vậy bạn có thể bắt đầu chặn một số thẻ tín dụng trong trường hợp xấu. - BlaM
Hahaha, dài và khó! - Kobbe


MySQL, có sáu bước đơn giản bạn có thể làm để bảo mật dữ liệu nhạy cảm của mình.

Bước 1: Xóa ký tự đại diện trong bảng trợ cấp

Bước 2: Yêu cầu sử dụng mật khẩu an toàn

Lưu ý: Sử dụng tùy chọn "--secure-auth" của MySQL để ngăn việc sử dụng các định dạng mật khẩu MySQL cũ hơn, kém an toàn hơn.

Bước 3: Kiểm tra quyền của tệp cấu hình

Bước 4: Mã hóa truyền khách-máy chủ

Bước 5: Vô hiệu hóa quyền truy cập từ xa

Bước 6: Chủ động theo dõi nhật ký truy cập MySQL

Công cụ bảo mật


3
2017-09-24 08:00





Tôi đồng ý, nhưng không phải cc nếu bạn không cần quá. Nhưng nếu bạn thực sự có quá, hãy chắc chắn rằng các tập tin có nó là không thể truy cập trên web. Bạn có thể viết một nhị phân sẽ trả về khóa. Bằng cách này, nó không lưu trữ trong văn bản rõ ràng. Nhưng nếu máy chủ của bạn bị xâm phạm thì vẫn dễ dàng để có được nó.


0
2017-09-11 02:25





bảo mật bạn cần phụ thuộc vào ứng dụng của bạn. ví dụ: nếu thời gian duy nhất cc # sẽ được sử dụng là khi người dùng đăng nhập (kịch bản loại cửa hàng trực tuyến mỏng), thì bạn có thể mã hóa cc # bằng băm mật khẩu thuần văn bản của người dùng, muối người dùng, và muối cc # chuyên dụng. không lưu trữ giá trị này vĩnh viễn.

vì bạn không lưu trữ giá trị này, lần duy nhất bạn có thể nhận được giá trị này là khi người dùng nhập mật khẩu của họ để đăng nhập. chỉ cần đảm bảo rằng bạn đã hết hạn phiên và chính sách thu gom rác tại chỗ.

nếu tình huống này không áp dụng cho bạn, vui lòng mô tả tình huống của bạn chi tiết hơn để chúng tôi có thể cung cấp câu trả lời phù hợp hơn.


0
2017-09-15 15:48