it-swarm-korea.com

PostgreSQL에서 저장 프로 시저가 SQL 삽입을 방지합니까?

저장 프로 시저로 인해 데이터베이스가 주입되지 않는 것이 사실입니까? 나는 약간의 연구를했는데 저장 프로 시저 만 사용하면 SQL-Server, Oracle 및 MySQL이 SQL 삽입에 대해 안전하지 않다는 것을 알았습니다. 그러나 PostgreSQL에는이 문제가 없습니다. PostgreSQL의 핵심에서 저장 프로 시저 구현이 SQL 주입을 방지합니까? 아니면 다른 이유/차이점이 있습니까? 스토어드 프로 시저 만 사용하는 경우 PostgreSQL에서 SQL 인젝션을 사용할 수 있습니까?

19
Am1rr3zA

간단히 말해, 저장 프로시 저는 SQL 삽입을 방지하지 않습니다. 저장 프로 시저 내에서 동적 SQL을 처리하는 방법에 따라 다릅니다.

자세한 답변을 보려면 여기에 게시 된 내용을 확인하십시오. https://stackoverflow.com/questions/627918/am-i-safe-against-sql-injection

11
anonymous

이 링크를 확인하면 사진이 더 선명 해집니다.

http://anubhavg.wordpress.com/2008/02/01/are-stored-procedures-safe-against-sql-injection/

http://www.sqlmag.com/article/sql-server/protecting-against-sql-injection.aspx

"... SQL 주입을 피하기위한 조치

  1. 서버에서 사용자가 입력 한 모든 입력을 확인하십시오.
  2. 대체 방법을 사용할 수있는 경우 동적 SQL 쿼리를 사용하지 마십시오.
  3. 매개 변수가 포함 된 매개 변수화 된 저장 프로 시저를 사용하십시오.
  4. JDBC의 Callable 문 또는 ADO의 CommandObject와 같은 안전한 인터페이스를 사용하여 저장 프로 시저를 실행하십시오.
  5. 권한이 낮은 계정을 사용하여 데이터베이스를 실행하십시오.
  6. 응용 프로그램에서 사용중인 저장 프로 시저에 적절한 역할과 권한을 부여하십시오. "
6
Phoenician-Eagle

IF SP 올바르게 사용하면 꽤 많이 SQL 주입으로부터 안전 (물론 여전히 올바른 입력 유효성 검사를한다고 가정합니다). IF .

아, 그러나 SP을 올바르게 사용한다는 것은 무엇을 의미합니까?

SP 자주 사용되는 두 가지 오용 중 하나는 저장 프로 시저 에서조차도 SQL Injection 으로 이어질 수 있습니다입니다.

  • SP 내부의 동적 SQL.
  • 연결된 문자열을 실행할 때 코드에서 SP 호출. 즉, 명령 /을 사용하는 대신 "exec spname (param1)"데이터베이스로 전송 매개 변수 객체 (또는 언어에 따라 쿼리를 매개 변수화) SQLi는 여전히 SP 호출에 주입 될 수 있습니다 ...
5
AviD

쿼리가 저장 프로 시저인지 여부에 관계없이 명명 된 매개 변수와 함께 변수 바인딩이 필요합니다. LIKE와 같은 특정 SQL 문에 대해서도 걱정해야합니다.

4
atdre