2008-10-24 30 views
5

Có thể sử dụng số JFileChooser để người dùng có thể chọn tệp trên ổ cứng của mình không? Hoặc điều này có vi phạm bảo mật Java applet không? (Tôi giả định rằng các cài đặt bảo mật mặc định đang được sử dụng. Tôi không muốn yêu cầu người dùng cấp cho tôi thêm quyền.)Sử dụng JFileChooser trong JApplet

Trả lời

3

This thread cho biết rằng bạn cần ký điện tử applet của mình trước khi cho phép JFileChooser.

+0

liên kết đó bị hỏng. và cả cách gọi lại cũng như bộ nhớ cache của google đều không có bản sao Tôi sẽ quay lại đây nếu tôi tìm thấy bất cứ điều gì –

+0

Xem tại đây: http://narencoolgeek.blogspot.com/2007/11/3-easy-steps-to-self-sign -applet-jar.html –

1

Trong trường hợp đó (sử dụng cài đặt mặc định), bạn đã đúng, trình quản lý bảo mật mặc định không cho phép truy cập vào các tệp cục bộ.

1

Có thể bạn sẽ phải sử dụng PrivilegedAction để đọc bất kỳ thứ gì từ ổ cứng của người dùng. Cũng giống như @mmyers cho biết bạn cũng sẽ phải ký vào applet của mình.

Vì vậy, câu trả lời của bạn là có, tôi đã thực hiện việc này trước để tôi biết điều đó có thể được thực hiện.

2

Như đã đề cập, bạn cần ký tên vào applet của bạn, dẫn đến "cảnh báo bảo mật mơ hồ" khi người dùng trình bày applet. Khi người dùng chấp nhận để chạy applet này, applet được cấp quyền truy cập đầy đủ và các chức năng giống như một ứng dụng thông thường với các tác động bảo mật rõ ràng của nó. Tôi đang ở trong tình huống khó xử tương tự liên quan đến một ứng dụng web mà tôi đang làm việc và chưa chắc liệu nó có được triển khai hay không.

Bạn cũng có thể sử dụng trình thu thập dữ liệu tích hợp trong trình duyệt web và trả lại nội dung tệp từ máy chủ của mình nếu bạn đang làm việc với các tệp nhỏ hơn.

Ngoài ra, một số biện pháp bảo mật mà bạn có thể làm liên quan đến một applet ký là:

  • Members nguồn gốc của mã applet.

    URL appletUrl = MyApplet.class.getProtectionDomain().getCodeSource().getLocation(); 
    if(appletUrl.toString().equalsIgnoreCase(safeAppletUrl) == false) 
        return false; 
    
  • Xác minh URL cơ sở mà từ đó applet được chạy.

    URL documentUrl = this.getDocumentBase(); 
    if(documentUrl.toString().equalsIgnoreCase(safeDocumentUrl) == false) 
        return false; 
    
Các vấn đề liên quan