여기에 약간의 상황이 있습니다. 나는 전체적으로 많은 위생 처리/매개 변수화를 수행하지 않는 상거래 서버로 작업하고 있습니다.매개 변수화 된 쿼리/쿼리 없음/사용하지 않음
SQL 삽입을 방지하기 위해 쿼리를 작성하려고하지만 검색 개체의 where/where 절이 필요합니다. 매개 변수화 된 인터페이스가 없습니다.
기본적으로 매개 변수화 할 수 없지만 가능하면 동일한 엔진을 사용하여 쿼리 텍스트를 작성할 수 있기를 바랍니다. 아마도 매개 변수가있는 쿼리만큼 좋지는 않은 자체 매개 변수 엔진을 작성하는 것 외에는이를 수행 할 수있는 방법이 있습니까?
업데이트 : 그러나 우리가했습니다 당신이 검색을 구체화하는 방법을 예 위
CatalogSearch search = /// Create Search object from commerce server search.WhereClause = string.Format("[cy_list_price] > {0} AND [Hide] is not NULL AND [DateOfIntroduction] BETWEEN '{1}' AND '{2}'", 12.99m, DateTime.Now.AddDays(-2), DateTime.Now);
*이
: 예 절은 본질적으로 절은 SQL 쿼리로 구축 될 수있다일부 테스트를 마쳤습니다.이 문자열은 NOT SANITIZED입니다.
.Format의 모든 입력이 사용자 입력이 될 수 있고 텍스트 상자에서 입력을 쉽게 정리할 수 있기 때문에 이것이 내 문제의 원인입니다. 가장자리의 경우를 놓치지 않을 것입니다. 사물의 본질. Commerce Server에는 확장 가능한 필드 집합 (스키마) 집합을 처리하는 방법에있어 약간의 미숙 한 논리가 있기 때문에 매개 변수가있는 쿼리를 사용하는 옵션이 없습니다. & 자유 텍스트 검색 단어가 미리 컴파일되어 있습니다. 의 라인을 따라 뭔가 이 내가
내가했던 것과/사랑이/볼 수있는 SQL 테이블에 직접 갈 수없는 의미입니다 :
SqlCommand cmd = new SqlCommand("[cy_list_price] > @MinPrice AND [DateOfIntroduction] BETWEEN @StartDate AND @EndDate");
cmd.Parameters.AddWithValue("@MinPrice", 12.99m);
cmd.Parameters.AddWithValue("@StartDate", DateTime.Now.AddDays(-2));
cmd.Parameters.AddWithValue("@EndDate", DateTime.Now);
CatalogSearch search = /// constructor
search.WhereClause = cmd.ToSqlString();
(시나리오를 강조하는 것이 좋으며 왜 매개 변수를 사용할 수 없습니까? 감사합니다) –
이 작업을 수행하는 방법에 대한 예를 들려 줄 수 있습니까? –