2016-07-25 2 views
6

일부 응용 프로그램이 있습니다. 사용자는 파일을 업로드하고, 디스크에 저장 한 다음, 사용자가 원할 때 되돌릴 수 있습니다. 나는 바이러스에 대한 업로드 파일에 대한 보호를 구현해야합니다. 업로드 된 파일에서 바이러스 검사하기

  • 내 서버에 안티 바이러스를 설치하고
  • 이 SDK 또는 API에 의해 바이러스를 통합 명령 줄에서 업로드 된 파일을 확인

    1. 를 사용하여 온라인 antiviruses : 나는 3이 문제에 대한 해결책을 발견했다.

    나는 다른 서버에 대한 내 파일과 개인 정보를 보내기 때문에 첫 번째 솔루션이 마음에 들지 않습니다. 제 생각에는 두 번째 해결책이 가장 좋지만 어떻게 올바르게 구현하는지 모르겠습니다. 마지막 솔루션은 좋지만, 자바 API를 가지고있는 유명하고 훌륭한 안티 바이러스를 찾을 수 없습니다.

    제발,이 문제를 해결하기위한 몇 가지 방향을 알려주십시오. 조언이나 문학에 대한 조언. 해결 방법은 무엇입니까?

  • +1

    이것은 주로 의견을 기반으로 표시되었지만 옵션 # 2를 제안하고 응용 프로그램에서 자식 프로세스로 AV 프로세스를 시작한 다음 자식이 종료 코드로보고하는 내용을 확인하십시오 (예 : '0' = clean ,'1' = 감염, 또는 뭔가 다른 - 검사 문서), 등등. – ray

    +0

    @ray이 권장 사항을 발견했습니다 : "애플리케이션 관점에서 보면 바이러스 백신 소프트웨어를 설치할 수있는 프록시 서버를 만들고이 서버에 파일을 업로드하고 스캔하여 대상 서버로 전송할 수 있습니다."그러나새로운 서버를 사용해야합니까? – zam

    +0

    올바르게 설정하기위한 인프라와 노하우가 있다면 서버에서 AV를 설치하면 애플리케이션이 새 파일에 대해 AV를 자식 프로세스로 실행할 수 있다고 가정합니다. 더 단순 해 보이지 않는가? – ray

    답변

    2

    먼저 설치된 바이러스 백신 소프트웨어가 어떤 종류의 API를 제공하는지 확인해야합니다.

    다음 아래를 사용해야합니다 (AVG의 API 등) 제공하는 자바 API가있는 경우에는 자바 API가 설치된 안티 바이러스 소프트웨어가 제공되지 않는 경우

    public void scanFile(byte[] fileBytes, String fileName) 
        throws IOException, Exception { 
        if (scan) { 
         AVClient avc = new AVClient(avServer, avPort, avMode); 
         if (avc.scanfile(fileName, fileBytes) == -1) { 
         throw new VirusException("WARNING: A virus was detected in 
          your attachment: " + fileName + "<br>Please scan 
          your system with the latest antivirus software with 
          updated virus definitions and try again."); 
         } 
        } 
    } 
    

    는, 당신은 아직도 그것을 호출 할 수 있습니다 아래와 같이 명령 줄을 사용 :이 도움이

    희망 JEE 응용 프로그램의 안티 바이러스 파일 검색을 구현 ​​:

    String[] commands = new String[5]; 
            commands[0] = "cmd"; 
            commands[1] = "/c"; 
            commands[2] = "C:\\Program Files\\AVG\\AVG10\\avgscanx.exe"; 
            commands[3] = "/scan=" + filename; 
            commands[4] = "/report=" + virusoutput; 
    
    
           Runtime rt = Runtime.getRuntime(); 
           Process proc = rt.exec(commands); 
    

    이 참조에 대한 흥미로운 기사가있다 너.

    관련 문제