2013-08-21 3 views
0

아래 코드를 수정하고 싶지만 수정 후에는 정규식이 작동하지 않습니다. 내가 뭘 잘못하고 있니?이 정규식 코드의 문제점은 무엇입니까?

내 코드

Regex reg = new Regex("(ALTER TABLE .+ REFERENCES\\s+)\"USER1\"[.](.+)"); 
richTextBox1.Text = reg.Replace(richTextBox1.Text, "$1$2"); 

수정 된 코드

Regex reg = new Regex(String.Format("(ALTER TABLE .+ REFERENCES\\s+)\"{0}\"[.](.+)",textbox1.text); 

richTextBox1.Text = reg.Replace(richTextBox1.Text, "$1$2"); 
+1

rickTextBox1.Text에서'{0}'이 (가) 사용됩니까? '{}'는 정의 된 반복에 일반적으로 사용됩니다. 중괄호를 이스케이프 처리하면됩니다 :'\ {0 \}'. – Jerry

+10

NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO NO YES –

+0

seconding It'sNotALie, 당신은 SQL을 종합하면 ** 많은 문제 **로 향하고 있습니다. SQL 삽입의 위험이 너무 높습니다. 코드가 검토 될 경우 가장 확실하게 통과하지 못할 것입니다. 준비된 명령문 및 호스트 변수를 대신 사용하십시오. – collapsar

답변

3

코드를 가진 근본적인 문제는 SQL Injection Attacks의 위협에서 유래한다.

문자열 조작을 사용하여 SQL 문을 동적으로 작성하는 이러한 접근 방식은 regexes를 사용하거나 사용하지 않아 위험합니다.

STOP 지금

당신의 더 집중 문제는 사라집니다.

매개 변수 대체를 사용하는 몇 가지 방법을 사용하십시오. ADO.Net은 매개 변수 또는 ORM 명령을 사용하거나 저장 프로 시저를 작성합니다.

+0

나는 SQL 주입과 아무 상관 없다고 생각합니다. 그것은 richtextBox에 표시되는 그냥 평범한 문장입니다. – user2661591

+0

@ user2661591, 알았어요. 인간의 공격이 공격을 수행하는 데 필요합니다. 이것은 SQL 작성을위한 도구일까요? – Jodrell

+0

TOYS와 같은 스크립트 작성 도구 – user2661591

관련 문제