자바로 정규표현식관련해서 질문이 있습니다
특정 문자열(태그가 포함된)

예를들어


이런 문자열이 있으면
여기서 <img> <br> <p> 이 태그만 제외하고 다 필터링 하고 싶은데요

전혀 감이 안와서 질문 드려봅니다-.-;
급한거라서..쿨럭
고수님들 초보 한번만 살려주세요 ㅠㅠ




--- java ---
 
--- C# ---

http://blog.naver.com/csaiur/10083194327

게시판 내용에서 HTML태그의 허용은 여러가지 문제를 야기시킨다.

 

특히나 <table>태그를 사용해서 레이아웃을 잡은 디자인일 경우 게시물 내용중에

</td>,</table>등이 잘못 들어갈 경우 게시물 내용은 처참하게 깨지게 되는 결과를 초래하게 된다.

 

<table>태그가 아닌 <div>레이아웃일지라도 </div>를 잘못 넣게 되면 역시 같은 문제가 발생한다.

 

또한 <script>,<style>등을 허용했을 경우는 뒷감당하기 힘들어질 수가 있다.

한술 더떠 이런 취약점을 이용한 게시판 테러는 서버 다운이나 정보유출등의 심각한 문제까지 발생할 수가 있다.

 

C#에서는 Server.HtmlEncoding()를 제공하기 때문에 게시물 내용중에 포함된

<,>등의 HTML특수문자를 간단하게 처리할 수 있다.

 

그렇지만, HTML태그가 전혀 허용되지 않은 게시물은 삭막하기 이를데 없을뿐더러

웹에디터를 거의 대부분 사용하는 요즘은 HTML이 막힌 게시판은 찾아보기조차 힘들다.

 

그렇다면 태그도 허용하고 테러도 막을 수 있는 방법은 없는 것일까?

 

간단하게 자주 사용되는 특정 HTML태그만 허용하고 나머지는 허용하지 않게 하면 된다.

 

 

C#에서 정규식을 이용해 비교적 간단하게 처리할 수 있으니 참고하길 바란다.

(말이 간단하지 정규식 한줄 짜는데 무려 3시간이나 허비했다 ㅜㅜ)

 



Posted by 에시드 :

SVN에서 Commit 실행후 프로그레스가 99%에서 멈쳐 강제종료하였더니 lock 걸렸다.
다시 Commit 시도하였으나 이미 locked

Team → Cleanup 실행 하여 조치


org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir
svn: Working copy 'XXXXXX' locked

org.tigris.subversion.svnclientadapter.SVNClientException: org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir
svn: Working copy 'XXXXXX' locked

at org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.update(AbstractJhlClientAdapter.java:1010)
at org.tigris.subversion.subclipse.core.commands.UpdateResourcesCommand.run(UpdateResourcesCommand.java:68)
at org.tigris.subversion.subclipse.ui.operations.UpdateOperation.execute(UpdateOperation.java:73)
at org.tigris.subversion.subclipse.ui.operations.RepositoryProviderOperation.execute(RepositoryProviderOperation.java:71)
at org.tigris.subversion.subclipse.ui.operations.SVNOperation.run(SVNOperation.java:89)
at org.eclipse.team.internal.ui.actions.JobRunnableContext.run(JobRunnableContext.java:144)
at org.eclipse.team.internal.ui.actions.JobRunnableContext$ResourceJob.runInWorkspace(JobRunnableContext.java:72)
at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir
svn: Working copy 'XXXXXX' locked

at org.tigris.subversion.javahl.SVNClient.update(Native Method)
at org.tigris.subversion.javahl.SVNClient.update(SVNClient.java:491)
at org.tigris.subversion.svnclientadapter.javahl.AbstractJhlClientAdapter.update(AbstractJhlClientAdapter.java:1006)
... 8 more



'JAVA' 카테고리의 다른 글

JAVA 형변환  (0) 2012.02.06
자바 정규표현식, 특정태그를 제외하고 필터링  (0) 2011.12.21
<logic:iterate> tag / out.flush  (0) 2011.09.19
JVM Memory 영역에 대한 설명  (0) 2011.08.02
JSTL(JSP Standard TAG Library)  (0) 2009.03.11
Posted by 에시드 :

<logic:iterate> tag / out.flush

2011. 9. 19. 22:39 from JAVA

while 문이나 for문대신 반복하면서 배열이나 컬렉션의 요소를 하나씩 꺼내 처리하는 테그

속성명

필수

디폴트값

자바 실행시 식의표시

설명

collection

표시

컬렉션을 취득하는 처리를jsp실행시식으로 기술한다.

id

필수

반복의,현재의 요소를 유지하는 변수명

page스코프의 BEAN으로서 취급된다.

indexId

반복루프카운트값을 유지하는 inetger형의 변수의 이름을 지정한다.

length

표시

최대반복횟수를 int형이나 java.lang..Integer형으로 지정한다. 컬렉션의 실제 길이보다 큰값을 지정한경우 실제의 길이에 다다르면 거기서 처리를 종료한다.

name

표시

반복의 대상이되는 컬렉션을 프로퍼티로써가지는 JavaBean scope속성응로지정한 스코프에서 취득하는 . Property속성이 생략된경우 반복의 대상이되는 컬렉션을 scope속성으로 지정된 스코프에서 취득하는

offset

0

표시

컬렉션의 반복을 시작하는 인텍스. Int형이나 java.lang.Integer형으로 지정한다.

property

표시

name속성으로 지정한 Bean 프로퍼티명을 지정한다. 취득한 오브젝트가 반복의 대상이 되는 컬렉션이된다.

scope

표시

name속성으로 지정한 Bean 검색하는 스코프를 지정한다. 생략된경우 page, request, session, application 순으로 자동검색된다.

type

표시

Id속성으로 지정된 Bean.실제로 캐스트 가능한 형을 지정한다.



<logic:iterate>태그는 자체적으로 null객체일때의 처리가 없으므로 예외처리를 위해

객체의 존재유무를 체크한다.

그 역할을 하는 태그는 <logic:empty><logic:notEmpty>이며 스크립트릿에서

if-else처리에 해당되는 태그

jsp 페이지는 기본적으로 8Kb 의 용량이 되어야 출력을 한다.

물론 페이지가 마감되면 당연히 브라우저에 나타나겠지만

백단 처리가 많은 경우엔 그대로 하얀 화면만 나오게 되므로

클라이언트의 불편함이 생길 수 있다.(화면이 안뜬다고 열심히 리프레쉬를 누르게 될테니...)

그러므로 백단 작업이 시작되기 전 화면 출력 내용이 8kb가 되지 않는다면

out.flush() 함수를 사용해서 로딩 중이라는 표시 정도는 해줘야

클라이언트의 불편함을 막을 수 있다.

out.flush()의 함수는 이 명령이 쓰여지기 전의 내용을 강제적으로 화면에 뿌려주는 기능을 제공

Posted by 에시드 :

JVM Memory 영역에 대한 설명

2011. 8. 2. 15:43 from JAVA

- Method Area : 메소드와 클래스 변수를 저장하기 위한 공간, 모든 프로그램에 의해 공유.
- Heap Area : 사용자가 생성하는 Java Object들이 저장되는 공간, 동적으로 할당하여 사용되어짐.
- Stack Area : 메소드 호출시 해당 메소드의 매개변수, 지역변수, 임시변수 등을 저장하기 위한 Stack 구조의 메모리.
- Native Heap Area : Java Object가 아닌 Native Object들이 거주하는 공간. OS 차원에서 결정.
- Permanent Space : Class에 대한 Meta 정보를 저장하는 공간. (Permanent Space는 Java Heap의 하위 영역)


* Java 실행 Option

1. -X Option (모든 VM에서 동작하지 않을 수 있는 비표준 option이며, 버젼별로 언급없이 변경되어질 수 있음)
-Xms : 초기 Heap size 설정
-Xmx : 최대 Heap size 설정
-Xss : 각 Thread에 할당되는 Stack size 설정
-Xmn : New 영역을 위한 Heap size 설정

2. -XX Option (올바른 동작을 위해 특정한 시스템 요구사항들이 있으며, 시스템 설정 파라미터에 대한 접근 권한이 요구됨)
-XX:PermSize : 초기 Permanent size 설정
-XX:MaxPermSize : 최대 Permanent size 설정

※ 참고 사이트 : http://blogs.sun.com/watt/resource/jvm-options-list.html
                           http://www.monosun.com/doc/hotspotvmoption.html


* Heap Size 구하기

long   heapSize   = Runtime.getRuntime().totalMemory();
String heapSizeMB = (heapSize / (1024*1024)) + "MB";


* 영역별 OutOfMemoryError 대처 방법

1. Heap Area
Exception in thread "main": java.lang.OutOfMemoryError: Java heap space
Exception in thread main: java.lang.OutOfMemoryError: Requested array size exceeds VM limit


원인 : Heap size의 부족으로 Java Object를 생성하지 못하여 발생
해결 : 1. -Xmx Option을 이용하여 최대 Heap size의 크기를 늘려줌
           2. Application 로직이 잘못되었거나 JDK나 WAS의 Bug로 인한 Memory 누수가 있는지 확인하여 수정
           3. finalize method에 의해 즉각적인 GC가 이루어지지 않으므로 로직 수정을 통해 해결

※ Object Allocation Profiling (Hprof)
java -Xrunhprof:heap=sites [Main Class]
java -Xrunhprof:heap=sites,doe=n [Main Class] (Thread Dump 생성)


2. Permanent Space
Exception in thread "main": java.lang.OutOfMemoryError: Perm Gen space'

원인 : Permanent 저장 공간이 부족하여 발생.
          JSP -> Servlet 변환, Reflection을 사용하여 동적으로 로딩되는 Class가 많은 경우에 발생할 수 있으며,
          WAS의 Class Reloading 기능이 자주 실행 될 경우에도 발생할 수 있음.
해결 : -XX:PermSize, -XX:MaxPermSize Option을 이용하여 크기를 늘려줌

※ Class Loading Monitoring
java 실행시 -verbose:gc을 사용하여 Class가 Loading 되는 것을 Monitoring


3. Native Heap Area
java.lang.OutOfMemoryError: request bytes for . Out of swap space?
java.lang.OutOfMemoryError: (Native method)'
java.lang.OutOfMemoryError: unable to create new native thread


원인 : Native Heap memory가 부족하여 발생
해결 : 1. Physical memory를 초과할 경우 Virtual Memory를 요청하여 필요한 메모리를 확보하게 되는데,
             이 과정에서 오류가 발생할 경우 OS가 제공하는 툴을 통해 이를 모니터링 하고
             이 공간 자체가 부족할 경우 크기를 늘려줌
          2. -Xmx Option을 이용하여 Heap Area 공간을 줄이고 Native Heap Area 공간을 늘림
          3. Thread Stack Space가 부족한 경우 Thread의 수를 줄이거나,
              -Xss Option을 통해 Thread별 Stack Size를 줄여줌
              (단, Thread별 Stack Size를 과도하게 줄였을 경우 Stack Overflow Error가 발생할 수 있음)



참고 사이트 : http://ukja.tistory.com/61
                      http://2005elc.elancer.co.kr/eTimes/page/eTimes_view.html?str=c2VsdW5vPTIwODY=
Posted by 에시드 :

JSTL(JSP Standard TAG Library)

2009. 3. 11. 22:36 from JAVA



jakarta-taglibs-standard-1.1.2.zip

jstl.ppt



▣ JSTL(JSP Standard TAG Library)의 사용
   - 많이 사용되는 사용자 정의 태그를 모아서 JSTL이라는 규약이 만들어졌습니다. 
   - 스크립틀릿, 표현식을 사용하는 것보다 훨씬 간결한 문법 구조를 지원합니다.
   - JSTL은 5가지의 태그를 지원합니다.
   라이브러리      기능                                      접두어                       관련 URL
   ----------------------------------------------------------------------------------------
   Core              변수지원, 흐름 제어, URL 처리       c     http://java.sun.com/jsp/jstl/core
   XML              XML 코어, 흐름 제어, XML 변환     x     http://java.sun.com/jsp/jstl/xml
   국제화           지역, 메시지 형식, 숫자 및 날짜     fmt    http://java.sun.com/jsp/jstl/fmt
   데이터베이스  SQL                                          sql   http://java.sun.com/jsp/jstl/sql
   함수              콜렉션 처리, String 처리                fn    http://java.sun.com/jsp/jstl/functions



 

Posted by 에시드 :