2010-01-12 3 views

답변

3

안전 데이터베이스 코드를 작성하는 몇 가지 이유 하지이 있습니까? 나는 그렇게 생각하지 않는다.

모두 안전하게 SQL을 실행하는 습관을해야한다, 그래서 당신은 심지어 당신이 공공 응용 프로그램을 작성할 때 그것에 대해 생각 할 필요가 없습니다.

또한 개인으로 의도 많은 코드가 공개적으로 나중에 달 또는 몇 년 접근되고 끝날 것이라는 점을 고려한다. 예를 들어 "이 인벤토리보고 용 인트라넷 앱은 유용합니다. 비즈니스 파트너가 공개 웹 사이트에 업로드하여 사용하지 않는 이유는 무엇입니까?"

  • SQL 쿼리에서 유효성이 확인되지 않은 데이터를 분리하려면 매개 변수를 사용하십시오.
  • 당신은 SQL 쿼리에 검증 데이터를 보간 할 수 있습니다. 즉, 변수가 인 경우에만이 정수가 될 수 있는지 테스트하는 코드가 있으면 정수로 처리하는 것이 안전합니다.
  • 쿼리의 다른 동적 부분 (테이블 이름, 열 이름, 식 등)의 경우 쿼리 매개 변수를 사용할 수 없습니다. 그러나 사용자 입력을 하드 코딩 된 문자열에 매핑 할 수 있습니다. 예 : 사용자가 1을 입력 한 경우 date 열을 기준으로 정렬합니다. 사용자가 2을 입력 한 경우 status 열을 기준으로 정렬하십시오.
  • "그냥 저장 프로 시저 사용!"이라고 말하는 프로그래머는 무시하십시오. 마치 SQL 인젝션에 대한 방어와 관련이 있습니다. 그렇지 않습니다. 실제 생활에서
+2

+1; 데스크톱 애플리케이션에서조차도 SQL 인젝션에 신경 쓰지 않는다면, "모든 _data_base는 우리에게 속한다" –

+0

퍼블릭으로 진화 할 가능성이있는 개인적인 점 – hawbsl

1

네, 다른 프로젝트에서 보았던 모든 이유 때문입니다.

귀하의 사용자 기반은 더 작을 수 있지만 동일한 위험이 있습니다.

+0

그것은 사용자 기반이 작다는, 사용자 기반이 것을 더하지 않습니다. 종종 모든면에서 "자신의"데이터베이스입니다. 그들은 그걸로 망칠 욕망이 없습니다. 사실 그들은 그것을 소유하고 있습니다. – hawbsl

+0

그들은 또한 백업 절차를 소유하고 있습니까? –

+2

SQL 인젝션은 반드시 악의적 인 것은 아니며 애플리케이션의 느슨한 입력 처리를 악용하는 정직한 사고 일 수 있습니다. –

2

에픽 이야기 : 중서부 회사의 빅 보스는 프로젝트 진행 상황을 살펴보고했다. 그 일이 어떻게 일어 났는지는 확실치 않지만, 전에 보지 못했던 고객을 위해 일정 계획 사무실에서 새로운 주문 세트가 내려졌습니다. 그리고 보스가 모습을 드러 낼 무렵에는 제작에 들어갔다. 그의 성은 O'Shaughnessy였습니다.

SQL 인젝션을 피하는 것 이상으로 매개 변수화 된 입력을 사용하는 것이 좋습니다. 일반적으로 - - 데이터베이스와 완전히 다른 관계가 나는 정중하게 그 대답 소유자와 동의

+0

나는 SQL 인젝션의 정의에 맞다고 생각한다. 우발적이긴하지만 악의적 인 것이 아닙니다. –

+0

좋은 점은 실제 차이점이 없다는 것입니다. –

+0

제 질문은 악의적 인 것과 우연한 것 사이에서 구분되어야합니다. 물론 winforms 애플 리케이션은 후자에 대해 경비가있다. 이론적으로 여전히 다른 종류의 공격에 취약하게 만드는 "O'Shaughnessy"오류에서 winforms 응용 프로그램을 보호하는 방법이 있습니다 – hawbsl

관련 문제