Sql Injection에 대한 MySql에 대한보다 안전한 LIKE 쿼리?

c# dapper mysql

문제

이 쿼리는 Dapper와 함께 SQL injection에 안전합니까? 그렇지 않다면, MySql에서 쓰는 올바른 방법은 무엇입니까? 아니면 concat을 사용하지 않고 더 좋은 버전이 있습니까?

string sql = "SELECT * from user_profile WHERE FirstName LIKE CONCAT("%",@name,"%");"
var result = connection.query<profile>(sql, new {name});

수락 된 답변

이것은 동적으로 SQL을 작성하지 않으므로 안전 합니다 . 이름은 단지 일반적인 매개 변수입니다. 실제로, 그것은 Dapper와 아무 관련이 없습니다.

여기서 문자열 연결을 사용하는 것이 올바른 선택입니다. 또는 SUBSTRING_INDEX 함수를 사용할 수도 있습니다.


전문가 답변

해당 코드에는 문제가 없지만 다른 방법은 호출자에서 concat을 수행하는 것입니다. 즉

const string sql = "SELECT * from user_profile WHERE FirstName LIKE @name;";
var result = connection.Query<Profile>(sql, new {name = "%"+name+"%"});


아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.