SQL 삽입을 제거하기 위해 일반적으로 bindparam
을 사용해야합니다. 그러나 어떤 상황에서는 bindparam
대신 literal_column
을 사용해야하며 SQL 주입을 방지하기 위해 어떤 조치를 취해야합니까?Sqlalchemy bindparam 대신 literal_column을 사용해야합니까?
0
A
답변
0
literal_column
은 열 이름을 매개 변수화 할 수 없으므로 (값 자체이기 때문에) 매개 변수가 아닌 열의 문자 이름으로 사용됩니다 (이는 쿼리 자체의 일부 임). 일반적으로 literal_column
을 사용하여 값을 쿼리에 입력하고 열 이름 만 사용해야합니다. 열 이름에 대한 사용자 입력을 수락하면 해당 이름을 허용해야합니다.
한 가지 예외는 때때로 SQLAlchemy에서 직접 지원하지 않는 복잡한 표현식을 출력하고 literal_column
은 기본적으로 자유 형식 텍스트를 쿼리에 넣을 수 있다는 것입니다. 이 경우 표현식의 사용자 제공 부분 (예 : 값)이 여전히 바인드 매개 변수를 통해 전달되는지 확인해야합니다.