2010-03-08 2 views
0

, 그것은 다음과 같습니다간단한 정규식 질문 (C 번호, SQL 서버) 좀 정규식을

string regexForDrop = @"^((%27)|'|(\-\-))\s*(d|%64|%44)(r|%72|%52)(o|%6F|%4F)(p|%70|%50)$"; 

내가 입력 "--drop"에 기록 할 때, 잘 작동하지만 작동하지 않습니다 , 내가 "드롭 테이블 사용자"또는 이와 비슷한 것을 쓸 때. 나는 "--drop"다음에 어떤 일이 일어나더라도 그것이 작동 할 것이 필요합니다. 어떻게 구현할 수 있습니까?

감사합니다.

+2

SQL 주입 공격을 방지하려고합니까? – FrustratedWithFormsDesigner

+4

나는 SQL 인젝션의 보안 방법으로 정규 표현식을 사용하지 말 것을 강력히 권고한다. 해킹당한 방법입니다. – JaredPar

+3

"--drop"에서 작동한다고해도 누군가가 할 수있는 "- truncate"또는 다른 악의적 인 일은 없습니까? –

답변

2
string regexForDrop = @"^((%27)|'|(\-\-))\s*(d|%64|%44)(r|%72|%52)(o|%6F|%4F)(p|%70|%50).*$"; 

? 또는 $

+0

좋습니다. 고맙습니다 ! – Vytas999

+0

+1, 어떤 @ Vytas999 이유, 당신은 그것을 해결하기 위해 코드를 썼습니다. –

6

SQL 주입 공격을 막으려 고하는 것 같습니다. 이 경우 매개 변수가있는 쿼리를 사용하면 주입을 확인할 필요가 없습니다.

좋은 읽기 :
http://weblogs.asp.net/scottgu/archive/2006/09/30/Tip_2F00_Trick_3A00_-Guard-Against-SQL-Injection-Attacks.aspx

+0

+1, 어떤 다른'나쁜 '진술은 정규식이 그리워 할 것인가? –

+0

예, SP에 대해 알고 있습니다. 정규 표현식에 대한 연구를 위해 몇 가지 연구를 수행합니다. 링크를 가져 주셔서 감사합니다, 나는 그것을 읽을 것입니다. – Vytas999

1

없이 정규 표현식의 끝에서 '$'를 제거합니다. $는 입력 문자열의 끝과 일치합니다.