인 코딩 과 필터

오리지널 작품 은 전 재 를 허용 하고 전 재 를 할 때 반드시 하이퍼링크 형식 으로 글 의 출처, 작가 정보 와 본인 성명 을 표시 해 야 합 니 다.그렇지 않 으 면 법 적 책임 을 추궁 할 것 이다.
저자: 영원의☆ 주소:http://blog.csdn.net/chenghui0317/article/details/7881454
1. 흔히 볼 수 있 는 문자 집합 과 문자 인 코딩 은 어떤 것 이 있 습 니까?
       문 자 는 문자 의 집합 이 고 문자 인 코딩 은 컴퓨터 에 인식 되 는 바 이 너 리 형식 을 보 여 주 는 바이트 이다.
       (1) ascii 문자 집합 은 주로 미국인 을 대상 으로 사용 되 며, 모든 문 자 는 8 개의 바이트 로 저장 되 며, 128 (2 < 6) 문 자 를 저장 할 수 있 습 니 다.
       (2) iso - 8859 - 1 문자 집합, 아랍 문자 집합 은 ascii 문자 집합 보다 강하 고 ascii 문자 집합 을 바탕 으로 더 많은 ascii 이외 의 문 자 를 저장 할 수 있 습 니 다. 이렇게 말 하면 iso - 8859 - 1 은 기본적으로 ascii 를 대체 할 수 있 습 니 다.
       (3) GB 2312 최초의 중국어 인 코딩 문자 집합
       (4) GBK 가 GB 2312 를 바탕 으로 확장 하 는 중국어 문자 집합
       (5) GB 18013 현재 가장 완 비 된 중국어 인 코딩 문자 집합
       (6) 유 니 코드 국제 인 코딩 의 문자 집합, 즉 전 세계 의 거의 모든 문자 집합 을 수용 할 수 있 습 니 다. 이것 은 가 변 길이 의 저장 방식 으로 최대 32 비트 길이 입 니 다.
2. 흔히 볼 수 있 는 코드 는 어떤 것들 이 있 나 요?어떻게 할 까요?
(1)    폼 의 post 제출 방식,
             처리 페이지 에 request. setCharacterEncoding ("UTF - 8") 을 추가 하면 됩 니 다.
             또는 모든 문자열 을 수 동 으로 바 꿉 니 다. 예 를 들 어 param = new String (param. getBytes ("ISO - 8859 - 1"), "UTF - 8");
             struts 2 프레임 워 크 에 어떻게 사용 하 는 지 상수: < constant name = "struts. i18n. encoding" value = "UTF - 8" > < / constant > 도 가능 합 니 다.
(2)    폼 의 get 제출 방식 을 사용 할 때 Tomcat 서버 를 사용 하면 tomcat 설치 디 렉 터 리 에 있 는 conf \ server. xml 에서 자신의 포트 번호 와 일치 하 는 connecter 연결 기 를 찾 을 수 있 고 URIEncoding = "UTF - 8" 을 추가 하면 수 동 으로 코드 를 바 꿀 수 있 습 니 다.
(3)    페이지 오류: 흔히 볼 수 있 는 것 은 페이지 인 코딩 형식 이 일치 하지 않 아서 생 긴 것 이기 때문에 평소에 인 코딩 은 규범 화 된 습관 을 길러 야 한다.
또한 자체 브 라 우 저 와 웹 페이지 의 인 코딩 형식 이 일치 하지 않 을 때 수 동 으로 변경 하면 해결 할 수 있 습 니 다.3. 필터 의 장점 은 어떤 것 이 있 습 니까?
(1)    인 코딩 을 처리 할 때 인 코딩 을 대량으로 수정 하면 코드 가 불필요 할 수 있 습 니 다. 필 터 를 사용 하여 모든 처리 요청 을 차단 하고 인 코딩 처 리 를 한 후에 실행 하면 통일 적 으로 처리 할 수 있 습 니 다.
(2)    그리고 필터 가 모든 요청 을 차단 할 수 있 기 때문에 필터 가 권한 검 사 를 하도록 정의 할 수 있 습 니 다.
(3)    자원 을 보호 하고 들 어가 지 말 아야 할 주 소 를 진행 하면 강제로 종료 합 니 다.
4. 어떻게 하면 다른 사람의 악성 코드 의 침입 을 효과적으로 방지 할 수 있 습 니까? 예 를 들 어 가장 흔히 볼 수 있 는 스 크 립 트 주입?
(1) 하나의 요청 을 받 아들 인 후에 먼저 받 은 후에 처리 할 수 있 기 때문에 더 이상 값 을 부여 할 수 없습니다. 예 를 들 어 request 에 getParameter () 가 있 습 니 다.하지만 setParamter () 가 없습니다.
(2) request 의 포장 류, RequestWrapper 를 스스로 정의 하여 Http ServletRequestWrapper 류 를 실현 하고 getParameter () 방법 을 다시 쓰 며 그 안에서 특수 한 태그 기 호 를 처리 하면 됩 니 다.
/**
 *     request      
 * @author Administrator
 *
 */
public class RequestWrapper extends HttpServletRequestWrapper{

	public RequestWrapper(HttpServletRequest request) {
		super(request);
	}
	
	//       getParameter()                
	@Override
	public String getParameter(String name) {
		String content = super.getParameter(name);
		content = content.replaceAll("<", "&lt;");
		content = content.replaceAll(">", "&gt;");
		content = content.replaceAll("\"", "&quot;");
		content = content.replaceAll(" ", "&nbsp;");
		return content;
	}

        //                RequestWrapper        
        filterChain.doFilter(new RequestWrapper((HttpServletRequest)request),response);

좋은 웹페이지 즐겨찾기