반응형
$ ls -li        //파일의 inode 번호를 확인 하는 명령어다
 1976 -rwxrwxr--    1 guda  guda          738  4월 29일 2005  洹??띻꼍?뺤껌援ъ옄猷?TXT
   53 -rw-rw-r--    1 guda  guda            0  1월 25일 2010  20100122

$ find ./ -inum 1976 -ls   //삭제하고자 하는 파일이 맞는지 확인해본다
 1976    1 -rwxrwxr--  1 guda   guda         738 Apr 29  2005 洹??띻꼍?뺤껌援ъ옄猷?TXT

$ find ./ -inum 1976 -ls -exec rm {} \;     //해당 파일을 삭제하는 명령어
 1976    1 -rwxrwxr--  1 guda   guda         738 Apr 29  2005 洹??띻꼍?뺤껌援ъ옄猷?TXT

$ ls   //정상적으로 삭제 되었는지 확인해보자..

이런식으로 파일명이 깨졌다든지 삭제가 안되는 파일을 inode 번호를 이용하여 삭제하면 된다. 
반응형

일반적으로 Action 클래스에서는 다음과 같은 로직을 통해 중복 Form Submit 여부를 체크할 수 있다.

  • Action Class

    boolean valid = isTokenValid(request, true);
    if (valid) {
        // TODO: submit 할 때 수행할 로직을 넣을 것
        System.out.println("status: performed");
    } else {
        // TODO: init / reload 할 때 수행할 로직을 넣을 것
        System.out.println("status: initialized or reloaded");
    }
    saveToken(request);

  • JSP

    <input type="hidden" name="org.apache.struts.taglib.html.TOKEN" 
    value="<%= session.getAttribute(org.apache.struts.Globals.TRANSACTION_TOKEN_KEY) %>">

    UI(JSP, HTML)에서는 "org.apache.struts.taglib.html.TOKEN"을 Key로 하는 Hidden Field를 통해 할당된 Token 값을 서버로 전송하고, 해당 Action 클래스에서는 isTokenValid 메소드 호출을 통해 이 Token 값과 Session에 저장된 Token 값을 비교함으로써, Token의 유효성을 검사한다.

위에 소스에 대해 개괄적으로 설명하면 Action 을 처리하면서 saveToken(request); 부분에서
세션에 토큰키를 생성하여 저장하게 된다.(현재시간과 세션아이디를 가지고 MD5 알고리즘을 이용해 생성)

JSP페이지에서 이를 히든타입으로 form에 담게 되고 submit을 통해 Action으로 가면
현재 세션에 저장되어 있는 토큰키와 form에 담겨 request로 넘어온 토큰키와 비교를 하게 된다.
그 키값이 같으면 정상처리를 하게 되고 saveToken(request); 부분을 통해 신규 토큰키가 생성되고
세션에 다시 담기게 된다. 이후에 새로고침이나 뒤로가기를 통해 다시 넘어오는 토큰키는 이전에 처리된
토큰키를 그대로 담고 있기 때문에 새로 생성된 신규 토큰키와 다르므로 중복처리를 제어할수 있는것이다.

토큰에 관한 부분은 아래 링크에 상세히 설명되어 있고 jsp에 name은 명확히 동일하게 작성되어야 한다.
 
아래 링크에서 "56.3.1. Double Submit의 개념" 부분을 참고하도록 하자.
http://dev.anyframejava.org/docs/anyframe/4.6.0/reference/html/ch56.html

+ Recent posts