2010-12-08 1 views
0

텍스트 문자열에 위험한 JavaScript가 있는지 확인하려면 java regexp가 필요하므로 데이터베이스에 저장하지 마십시오. 내가 인터넷에서 어떤 정보를 찾기 위해 노력하고 있지만, 아무것도 찾을 수 없습니다 :( 누군가가? 좀 도와 수하는 당신에게RegExp를 사용하여 JavaScript를 확인하십시오.

+0

일치시킬 텍스트의 종류에 대해 자세히 설명해 주시겠습니까? – Ruel

+2

데이터베이스에서 JavaScript 코드가 실행되지 않습니다. 그 맥락에서 걱정하지 마십시오. – Gumbo

+1

RE를 사용하지 마십시오. 그 목적을 위해 지어지지 않았습니다. 어떤 종류의 JS 살균제를 사용하십시오. 나는 당신에게 줄 이름이 없기 때문에 이것을 주석에 넣었습니다. – Keng

답변

0

감사 나는 몇 년 전에 정규 표현식과 같이 저를 위해 추가 된 자바 클래스를 사용 :

String[] EVIL_WORDS = { "<", "%3C", "&#x3C;", "&#60", "PA==", 
          ">", "%3E", "&#x3E;", "&#62", "Pg==", 
          "&", "%26", "&#x26;", "&#38", "Jg==", 
          "\"", "%22", "&#x22;", "&#34", "Ig==", 
          "'", "%27", "&#x27;", "&#39", "Jw=="}; 

StringBuffer buffer = new StringBuffer(); 
buffer.append("(.") 
if(EVIL_WORDS.length > 0) {  
    buffer.append("(?<!"); 
    buffer.append(EVIL_WORDS[0]); 
    for (int i = 1; i < EVIL_WORDS.length; i++) { 
    buffer.append('|'); 
    buffer.append(EVIL_WORDS[i]); 
    } //for 
    buffer.append(')'); 
}//if 
buffer.append(')*'); 

이 감지 잘못된 문자가왔다 일치하지 않는 패턴

0 :.

(.(?<!<|%3c|&#x3c))* 

그것은 그런 식으로 계산했다

이 스크립트는 원본 Veerery Looong 정규 표현식을 생성하고 길이, SQL 삽입 및 기타 많은 항목을 검사했지만이 시간은지나 갔다. grails 및 XSS 보호 기능과 최대 절전 모드 SQL 주입 방지 기능을 통해 더 이상 사용하지 않습니다. 그러나 내가 당신을 도울 수 있다면 기쁩니다.