multipart/form-data 인지 체크 

MultipartRequestWrapper 상속해서 수정




1. multipart/form-data 인지 체크하는 방법


request.getContentType()).toLowerCase()).startsWith("multipart/form-data")



2.MultipartRequestWrapper 상속해서 수정

- 단 파일 업로드시 null로 체크 되버려서 사용하지는 말고 참고용으로만 



package kr.co.test.util;


import java.io.IOException;

import java.util.HashMap;


import javax.servlet.http.HttpServletRequest;


import org.apache.struts.upload.MultipartRequestWrapper;


import com.oreilly.servlet.multipart.MultipartParser;

import com.oreilly.servlet.multipart.ParamPart;

import com.oreilly.servlet.multipart.Part;


public class SecurityMultipartRequestWrapper extends MultipartRequestWrapper {


private MultipartParser mp = null ; 

public SecurityMultipartRequestWrapper(HttpServletRequest request) {

super(request);

try {

mp = new MultipartParser((HttpServletRequest)request, 1000000);

parameters = new HashMap();

Part part ;

String name ="", value="";

String[] values = null;

    while ( ( part = mp.readNextPart() ) != null ) { 

    name = part.getName() ; 


    if ( part.isParam() ) { 

    ParamPart paramPart = (ParamPart) part ; 

    if (parameters.get(name)!=null){

    if (parameters.get(name).getClass().equals(String[].class)){

    String[] temp = (String[])parameters.get(name);

    String newValue[] = new String[temp.length + 1];

   

            System.arraycopy(temp, 0, newValue, 0, temp.length);

            newValue[temp.length] = paramPart.getStringValue();

            parameters.put(name, newValue);

    } else {

    String newValue[] = new String[2];

    newValue[0] = (String) parameters.get(name);

    newValue[1] = paramPart.getStringValue();

    parameters.put(name, newValue);

    }

    } else {

    parameters.put(name, paramPart.getStringValue());

    }

    }

    }

} catch (IOException e) {

e.printStackTrace();

}

}


@Override

    public String getParameter(String name)

    {

String value = null;

        if(parameters.get(name).getClass().equals(String[].class))

        {

            String mValue[] = (String[])parameters.get(name);

            if(mValue != null && mValue.length > 0)

                value = mValue[0];

        } else {

        value = (String)parameters.get(name);

        }

        return value.replaceAll("a", "");

    }

}

'JAVA' 카테고리의 다른 글

[JAVA] Object Array  (0) 2022.05.23
[JAVA] 휴일 알아내기  (0) 2021.06.25
multipart 파일체크  (4) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 파일체크

JAVA 2019. 4. 9. 16:04

multipart 파일체크



if(isFileUploadRequest((HttpServletRequest)request)){

HttpServletRequest httpServletRequest = new HttpServletRequestWrapper((HttpServletRequest)request);//(HttpServletRequest)request;

String flag ="T";

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(50 * 1024);

factory.setRepository(new File("/"));

   ServletFileUpload upload = new ServletFileUpload(factory);

   ArrayList fileItems;

try {

fileItems = (ArrayList)upload.parseRequest(httpServletRequest);

 Iterator i = fileItems.iterator();

 while ( i.hasNext () ) {

     FileItem fi = (FileItem)i.next();

     if ( !fi.isFormField () ){

         if (fi.getName().indexOf(".")>-1){

if (!getExtCheck(fi.getName(), writeExt)){

flag ="F";

break;

}

 }

     }

 }

 

} catch (FileUploadException e) {

       e.printStackTrace();

   }

 

   //System.out.println(request.getAttribute("flag").toString());

 if (flag.equals("F")){

        response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<html>");

out.println("<head>");

out.println("<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">");

out.println("<script type=\"text/javascript\">");

out.println("alert('등록하실수 없는 확장자입니다.');");

out.println("history.back();");

out.println("</script>");

out.println("</head>");

out.println("</html>");

out.flush();

out.close();

return;

aChain.doFilter(request, response);

}else{

aChain.doFilter(request, response);

}




  public boolean getExtCheck(String value, String writeExt){

   String[] file = value.toLowerCase().split("\\."); 

   String ext = file[file.length-1];

   if (ext!=null && ext.length()>0 && writeExt.indexOf(ext)==-1){

   return false;

   }

   return true;

  }

'JAVA' 카테고리의 다른 글

[JAVA] 휴일 알아내기  (0) 2021.06.25
multipart/form-data 인지 체크, MultipartRequestWrapper 상속해서 수정  (2) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

dblink3

DB/MSSQL 2019. 4. 2. 16:00

dblink3



스크립트(?)로 하실려면 아래처럼 sp_addlinkedserver 사용.. 

ex.) 

-- 연결시 

EXEC sp_addlinkedserver @server='R_SVR',@srvproduct='SQLServer OLEDB Provider',@provider='SQLOLEDB',@datasrc='아이피' 

GO 


EXEC sp_addlinkedsrvlogin 'R_SVR', 'false', NULL, '접속계정', '계정의 비밀번호' 

GO 


SELECT * 

FROM 연결한서버명(R_SVR).DB명.소유자.테이블명 

GO 

-- 연결해제시 

EXEC sp_dropserver 'R_SVR','droplogins' 

GO

'DB > MSSQL' 카테고리의 다른 글

[MSSQL]프로시져1  (0) 2022.04.21
[MSSQL] 날짜 형식 맞추기  (0) 2022.04.21
dblink  (0) 2019.04.02
dblink2  (0) 2019.03.22
페이지 쿼리2  (0) 2019.03.22
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,