2011-10-29 4 views
0

C#에서 SqlCommand를 사용하고 해당 명령에 매개 변수를 추가하는 경우 Sql Injection으로부터 보호하기 때문에 보안이 추가됩니다. 이것이 사실인지 궁금 해서요. 그렇다면 Sql Injection을 막을 수있는 방법은 매개 변수를 사용할 때 Sql 명령의 한 지점에 문자열을 삽입한다는 것입니다. 그 문자열은 Sql Injection을 가능하게 만드는 어떤 것이라도 될까요?SqlCommand 매개 변수 설명

답변

3

간단한 대체가 아닙니다. 프레임 워크는 으로 이스케이프하여 코드로 값을 실행할 수 없도록 (특히 문자열) [RPC 호출의 별도 부분으로] 값을 전송합니다.

@PanagiotisKanavos 덕분에 correction (6 년 후).

+0

프레임 워크는 눈금 표시 안의 숫자 나 아무것도 삭제할 것입니다. –

+0

아니요, 쿼리의 일부로 눈금이 포함됩니다. 그래서 여러분의 필드가 숫자이고 이와 비슷한 것이 있다면. '+ 0 = 0', 그 모든 것은 매개 변수가 될 것이고 질의는 질의를 수정하려는 주입 의도와 반대되는 오류가 될 것입니다. 오류는 당신이 원하는 것입니다. –

+2

아니요, 아무 것도 제거하지 않고, 단지 인코딩하여 데이터베이스에 기록 될 때 저장할 수 있습니다. SqlParameter는 또한 일치하는 열이 저장하고 적절하게 인코딩하는 데이터 형식을 처리하며 string이 VARCHAR (n)을 보유하는 열에 맞을 경우와 같은 바운드 조건을 검사합니다. –