Tôi đang lưu trữ ứng dụng Yii trên máy chủ chia sẻ với một số người bạn của tôi và giữ cơ sở dữ liệu trong máy chủ MySQL riêng tư. Như bạn đã biết, thông tin cơ sở dữ liệu có thể được tìm thấy cho đến rất dễ dàng trong protected\config\main.php
bởi một chủ sở hữu máy chủ (bạn và nhiều hơn nữa của tôi):Cách chuỗi kết nối được bảo vệ bởi ứng dụng Yii?
'db'=>array(
'connectionString' => 'mysql:host=211.113.2.45;dbname=FamilyBook',
'emulatePrepare' => true,
'username' => root,
'password' => 'xcute445',
'charset' => 'utf8',
),
Có giải pháp nào để che giấu thông tin kết nối như IP mySQL máy chủ, tên người dùng, mật khẩu?
Máy chủ MySQL có thể cung cấp cơ chế RSA để bảo vệ thông tin cơ sở dữ liệu không?
Ví dụ, bất kỳ người có thể thấy như sau nhưng không thể hiểu hoặc sử dụng:
'db'=>array(
'connectionString' => '57bf064b2166366a5ea61109006b8d5c',
'emulatePrepare' => true,
'username' => '63a9f0ea7bb98050796b649e85481845',
'password' => 'e04ccf211208f8c97e4a36e584926e60',
'charset' => 'utf8',
), // value by MD5 function, example only
Nếu thông tin "làm thế nào để xác thực tại máy chủ sql của tôi "nằm trên máy chủ nơi bạn lưu trữ ứng dụng của mình và ứng dụng có thể truy cập bởi Yii, sau đó mọi người với quyền truy cập có thể tìm thấy thông tin đó. Không có vấn đề cho dù đó là một mật khẩu thuần văn bản, một băm hoặc một khóa riêng. –
Bạn có thể sử dụng mã hóa hai chiều, [một cái gì đó như thế này] (http://www.99points.info/2010/06/php-encrypt-decrypt-functions-to-encrypt-url-data/). Làm cho các phương thức tĩnh và sau đó vượt qua 'Mã hóa :: giải mã (my_encoded_username)' thành 'username',' password' vv. Tôi không chắc chắn nếu Yii tải các lớp trong tệp cấu hình, tuy nhiên. – adamors
@ :rs: Điều đó sẽ làm gì? Bạn cần lấy khóa mã hóa từ đâu đó. Nếu một nơi nào đó có thể truy cập được cùng với nguồn của bạn, bất kỳ ai có quyền truy cập vào nguồn đều có thể giải mã mật khẩu. Nếu không, chỉ cần đặt mật khẩu ở đó và không cần phải liên quan đến mã hóa. – Jon