2009-07-31 20 views
5

Tôi đã hỏi "How to run a executable file from a web page?"Đáng ngạc nhiên, Mã JavaScript có thể thực thi bất kỳ quá trình nào mà nó muốn. Tại sao?

Nhiều người đã nói với tôi điều đó là không thể, nhưng đồng nghiệp của tôi tìm thấy một đoạn mã JavaScript có thể thực thi bất kỳ quy trình nào. Tôi không thể tin rằng ActiveX là rất nguy hiểm.

Điều này có thể xảy ra như thế nào? Tại sao điều này không bị cấm bởi IE?

<SCRIPT language=JavaScript> 
    function Run(strPath) { 

    try { 
    var objShell = new ActiveXObject("wscript.shell"); 
    objShell.Run(strPath); 
    objShell = null; 
    } 
    catch (e){alert('Can not find "'+strPath) 

    } 
    } 
    </SCRIPT> 

    <BUTTON class=button onclick="Run('notepad')">notepad</BUTTON><br> 
    <BUTTON class=button onclick="Run('mspaint')">mspaint</BUTTON><br> 
    <BUTTON class=button onclick="Run('calc')">calc</BUTTON><br> 
    <BUTTON class=button onclick="Run('format c:')">format c:</BUTTON><br> 
+1

Một người bạn của tôi thậm chí đã lưu tệp thực thi trong 'C: /' bằng ActiveXObject. Và không có mức độ hạn chế đặc biệt nào. Cài đặt từ "nhà máy". –

+0

Tại sao điều này lại có thể xảy ra? Vì IE rất khó! –

Trả lời

6

Trong khi bạn có thể làm điều này IE sẽ chặn nó nói rằng có một

ActiveX Control đang cố gắng truy cập vào máy tính của bạn, nhấp vào đây để lựa chọn

Bạn chỉ có thể chạy chúng nếu người dùng cuối cho phép họ và hy vọng mọi người đủ thông minh để không cho phép nó chạy. Nếu bạn cho phép nó thì luôn luôn có một cảnh báo khác hỏi bạn có thực sự muốn chạy nó không, vì vậy cần có đủ an toàn xung quanh nó.

1

Bạn đã thử cái này chưa?

wscript.shell không thể được sử dụng theo cách này từ trang web được tải từ xa. Nếu bạn tải trang web từ một tệp cục bộ hoặc đã thay đổi cài đặt bảo mật của bạn, nó có thể hoạt động nhưng nó sẽ không hoạt động khi được tải từ máy chủ web từ xa.

+0

Điều này cũng sẽ xảy ra nếu bạn chạy nó từ tập tin: // – AutomatedTester

+0

Không, nó cũng hoạt động từ xa. Nó chỉ hỏi nếu người dùng muốn chạy một activex, mà hầu hết mọi người sẽ chọn "YES" – ablmf

+0

Nó không hoạt động trên một trong các máy tính tôi đã thử nó trên. Bạn phải được cấu hình khác nhau – jcoder

0

Tin vui là IE8 chặn hành vi này, ngay cả với tệp cục bộ. Tôi không biết về IE7, mặc dù tôi sẽ tưởng tượng đây cũng là trường hợp. Tôi sẽ nghi ngờ nó sẽ làm việc với một tập tin từ xa, ngay cả với IE6, nếu không chúng tôi sẽ có một số sự cố lớn bây giờ và một bản vá sẽ được ban hành.

+0

Không, điều đó không đúng. Tôi đã thử nghiệm nó trên IE8. Nó chỉ yêu cầu người dùng nếu anh ta muốn chạy activex. – ablmf

3

Tệp cục bộ chạy trong môi trường bảo mật khác với tệp từ xa, vì vậy tệp sẽ hoạt động nếu bạn lưu tệp dưới dạng html và mở tệp đó từ máy tính của mình, nếu bạn tải tệp lên máy chủ và cố gắng chạy tệp đó từ đó nó sẽ không làm việc.

0

Tùy thuộc vào cấu hình bảo mật của trình duyệt của bạn. Trong một số trường hợp, mã hòa bình này sẽ không được thực thi. Nhưng dù sao người dùng sẽ được yêu cầu cho phép ActiveX chạy quy trình bên ngoài:

ActiveX Control is trying to access you computer, click here for options 
Các vấn đề liên quan