2009-06-03 5 views
0

C#에서 datacontent.executeCommand ("string")를 수행하려고합니다. 삽입을하려고 할 때마다 문제가 발생합니다. 항목에 '단어'가있을 때마다 새 열이라고 생각하기 때문에 예외가 발생합니다.C#의 정규 표현식

'word'을 어떻게 ''word''으로 변환 하시겠습니까?

+0

요구를 더 문맥. 코드를 게시하십시오. – Juliet

답변

1

\를 사용하여 SQL 문자열의 문자를 이스케이프 할 수 있습니다. 그러나, 나는 당신의 문제에 대한 최선의 해결책 (그리고 다른 사람들의 무리, 처음부터 이렇게하지 않으면 나중에 실행할 것임)이 SQL 매개 변수라고 믿는다.

0
I 사용자가 악의적 인 SQL을 실행하여 데이터베이스를 공중 납치 할 수 SQL 주입의 놀라운 세계에 오신 것을 환영하고 싶습니다

때문에 당신이 임의의 문자열 ;-)

당신은 정말에서와 마찬가지로 (매개 변수를 사용해야을 실행하기 System.Data.SqlClient) 또는 생성 된 LINQ 데이터 모델 개체를 사용하고 해당 값을 설정 한 다음 변경 내용을 제출하십시오. 데이터 액세스 레이어가 값을 벗어나 DELETE * FROM IMPORT_TABLE과 같은 SQL 문을 포함하는 텍스트를 입력 할 수있는 사용자로부터 사용자를 보호하십시오.

1

Tomas 및 Jason에서 제안한 것처럼 이러한 문제를 방지하려면 SQLParameters를 사용하는 것이 가장 좋습니다.

그러나 많은 코드 변경이 필요하고 빠른 수정이 필요한 경우 다음과 같이 말합니다. 은 필요하지 않습니다. 당신은 내가 제대로 Q와 '단어'변경해야의 유일한 인스턴스를 이해하지 않은 경우하려면 string.replace

string query; 
... 
query.Replace("'", "''"); 

을 할 필요가, 당신은 할 수 있습니다 :

query.Replace("'word'", "''word''"); 
+1

동의. 나는 이것을 수년간 해왔으며, 여러분이 SQL 문에 문자열을 주입한다는 것은 어디에서나 사용할 수 있다는 것을 전제로하고 있습니다. 문제가있는 곳에서 완벽하게 안전하고 적절합니다. – harpo