2010-03-13 36 views
7

Đây là cuộc thảo luận giữa tôi và tôi để hiểu vấn đề Isolated Storage. Bạn có thể giúp tôi thuyết phục tôi về Dung lượng lưu trữ được không?Sự hiểu lầm về bộ nhớ bị cô lập

Đây là mã được viết cho ứng dụng Windows Forms (trình đọc) đọc lưu trữ riêng biệt của ứng dụng Windows Forms khác (người viết) được ký. An ninh ở đâu nếu người đọc có thể đọc tệp của nhà văn? Tôi nghĩ chỉ có mã đã ký mới có thể truy cập tệp!

Nếu tất cả các ứng dụng .NET được sinh ra bình đẳng và có tất cả các quyền truy cập Bộ nhớ cách ly, khi đó bảo mật sẽ ở đâu? Nếu tôi có thể cài đặt và chạy một tệp EXE từ Bộ nhớ bị cô lập, tại sao tôi không cài đặt vi-rút và chạy nó, tôi tin cậy để truy cập khu vực này. Nhưng virus hoặc bất cứ điều gì sẽ không được tin cậy để truy cập vào phần còn lại của hệ thống tập tin, nó chỉ có thể truy cập vào bộ nhớ, và điều này là đủ nguy hiểm.

Tôi không thể thấy bất kỳ sự khác biệt nào giữa việc sử dụng thư mục dữ liệu ứng dụng để lưu trạng thái và sử dụng Bộ nhớ bị cô lập ngoại trừ một con đường dài khó chịu !!

Tôi muốn thử độ tin cậy thấp cho mã người đọc và thử lại, nhưng họ nói "Bộ nhớ riêng biệt thực sự được tạo để cung cấp cho ứng dụng đáng tin cậy thấp quyền lưu trạng thái của nó".

đang Reader:

private void button1_Click(object sender, EventArgs e) 
{ 
    String path = @"C:\Documents and Settings\All Users\Application Data\IsolatedStorage\efv5cmbz.ewt\2ehuny0c.qvv\StrongName.5v3airc2lkv0onfrhsm2h3uiio35oarw\AssemFiles\toto12\ABC.txt"; 
    StreamReader reader = new StreamReader(path); 
    var test = reader.ReadLine(); 
    reader.Close(); 
} 

Writer:

private void button1_Click(object sender, EventArgs e) 
{ 
    IsolatedStorageFile isolatedFile = IsolatedStorageFile.GetMachineStoreForAssembly(); 
    isolatedFile.CreateDirectory("toto12"); 

    IsolatedStorageFileStream isolatedStorage = new IsolatedStorageFileStream(@"toto12\ABC.txt", System.IO.FileMode.Create, isolatedFile); 
    StreamWriter writer = new StreamWriter(isolatedStorage); 
    writer.WriteLine("Ana 2akol we ashrab kai a3eesh wa akbora"); 
    writer.Close(); 
    writer.Dispose(); 
} 

Trả lời

2

Tất nhiên bạn có thể tiếp cận bất kỳ vị trí nào (đã biết) trên ổ đĩa cứng bằng mã trình đọc của bạn, giả sử rằng bạn có đủ quyền truy cập vào vị trí đó.

Không có quyền đặc biệt nào được áp dụng cho khu vực IsolatedStorage, nhưng có các quy tắc áp dụng cho các ứng dụng tin cậy thấp sử dụng IsolatedStorage cách nó được dự định sử dụng. Hoàn toàn không có gì để ngăn bạn mã hóa những gì bạn lưu trữ ở đó nếu bạn muốn giữ riêng tư.

Chỉnh sửa: kiểm tra CLR Inside Out - Isolated Storage In Silverlight 2Silverlight out-of-browser apps: Local Data Store.

+0

Tuy nhiên, không có sự khác biệt giữa lưu tệp vào dữ liệu ứng dụng và bộ nhớ riêng biệt, vì theo mặc định, bạn có thể lưu tệp vào thư mục dữ liệu ứng dụng mà không có sự cho phép. – Costa

+0

Hmmm ... bạn dường như vẫn thiếu điểm một chút? IsolatedStorage được thiết kế để sử dụng với các ứng dụng Silverlight tin cậy thấp mà không có quyền truy cập mở vào hệ thống tập tin như được minh họa trong mã đọc tệp của bạn. Kiểm tra chỉnh sửa của tôi cho một vài liên kết hữu ích. – slugster

11

Tôi đồng ý về "hiểu sai" của bạn trong tiêu đề; Tôi nghĩ rằng bạn đang hiểu lầm mục đích của lưu trữ bị cô lập.

Khi tôi hiểu rằng "bị cô lập" không không phải là có nghĩa là "bộ nhớ riêng tư mà các chương trình khác không thể truy cập". Nó có nghĩa là một "sandbox" để cung cấp cho chương trình tin cậy thấp của bạn một nơi mà nó có thể lưu dữ liệu khi nó có thể không có quyền ghi vào một nơi khác.

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