C# 어셈블리 주입 점검
-
03-07-2019 - |
문제
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";
제휴하지 않습니다 StackOverflow