문제

MS SQL 2005의 C#에 어셈블리를 만들고 있습니다.이 어셈블리는 저장된 절차를 생성하고 저장된 절차에 전달 된 매개 변수를 기반으로 동적 쿼리를 실행합니다.

SQL 주입을 방지하기 위해 C#에 간단한 기능이 있습니까?

예를 들어

string myQuery = "SELECT * FROM dbo.MyTable WHERE lastName = '" + injectionCheck(arg1) + "'";

이 질문은 표준 쿼리에 대한 답변이되었지만, 진정으로 동적 인 쿼리를 구축하는 방법이없는 상황에서는 주입 점검에 C#에서 무엇을 사용할 수 있습니까?

예를 들어, 이들은 작동하지 않을 것입니다.

@dbname 사용;

@table에서 *를 선택하십시오

열린 대칭 키 @keyyname

도움이 되었습니까?

해결책

바운드 매개 변수 사용 :

SqlCommand cmd = new SqlCommand(myQuery, conn);
cmd.Parameters.Add("@lastname", SqlDbType.NVarChar, 10, lastName);

다른 팁

매개 변수를 사용합니다 ....

(이것은 자주 게시되었습니다)

string myQuery = "SELECT * FROM myTable WHERE lastname = @p_name";

SqlCommand cmd = new SqlCommand();
cmd.CommandText = myQuery;
cmd.Parameters.Add ("@p_name", SqlDbType.Varchar).Value = "melp";
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top