나는 ... 대답이 더 있지만 더 나은 용서를 요청하는 것보다 지금 물어 없습니다 꽤 확신저장 프로 시저를 사용할 때 데이터를 위생해야합니까?
나의 이해는 우리가 서버 측 코드에서 쿼리를 작성하고 실행할 때 SQL 주입은 일반적으로 발생한다는 것입니다 직접 그래서 데이터베이스에 대해 :
db.any('SELECT * FROM Foo WHERE id = '${bar}')
우리가 저장 프로 시저, 안전하게 항상를 사용하지만 경우에? 우리가
db.any('SELECT * FROM Foo WHERE id = $1', [bar])
를 사용하는 경우 내 이해 (그리고 나는이 주제에 대한 검색을 찾을 수 있었던 것과) 한 것을 우리가 적절한 유형을 사용하는 한,이 유형 캐스트를 줄 경우 발생되기 때문에 열 ID와 일치하는 유형이 아닙니다. 어떤 ID가 캐릭터가 변화 또는 텍스트 필드하지만 우리는이 같은 한 경우 :
const bar = "1'; DROP TABLE users;";
db.any('SELECT * FROM Foo WHERE id = $1', [bar])
겠습니까을이 캐릭터가 변화 또는 텍스트 필드 것을 이야기하고 안전하게 데이터베이스에 입력 (이 경우 포스트 그레스에서)? ? 또는 안전을 위해 저장 프로 시저로 보내기 전에 데이터를 살균해야합니까?