SQL 주입에 취약한 잘못된 sql 쿼리를 수정하는 중입니다. 대부분은 입력이없는 직접 쿼리이지만 검색 필드에는 매개 변수가없는 검색어가 사용됩니다. 스 니펫은 다음과 같습니다 :ORMLite에서 임의의 수의 매개 변수 사용 쿼리
using (var db = ORMLite.Open())
{
StringBuilder sb = new StringBuilder();
sb.Append("select * from column1, column2");
if (terms.Count() > 0)
{
sb.Append("where (column1 like '%@term0%' or " + column2 + " like '%@term0%') ");
if (terms.Count() > 1)
{
for (int i = 1; i < terms.Count(); i++)
{
sb.Append("and (column1 like '%@term" + i + "%' or " + column2 + " like '%@term" + i + "%') ");
}
}
}
List<POCO> testQuery = db.Select<POCO>(sb.ToString());
}
내가 매개 변수를 사용하려는 곳 @term 구성 요소는 (그들이 형태 '" + term[i] + '"
될하는 데 사용,하지만 난 내 선택으로 이동하면 악성 코드가 어떤 용어가 바로 삽입됩니다. 매개 변수를 추가하고 싶습니다. 이것은 일반적으로 다음과 같이 수행됩니다 :
List testQuery = db.Select (sb.ToString(), new {term0 = "t", term1 = "te", term2 = "ter"});
그러나 임의의 수의 용어를 가질 수 있습니다 (term.count()는 용어의 수임). 임의의 수의 용어로 익명 객체를 전달할 수 있습니까? 아니면 여기에 더 좋은 방법이 있습니까?