2010-04-15 3 views
4

누군가의 iPhone과 클라우드의 원격 데이터베이스간에 데이터가 저장 될 때 SQL 주입 공격과 관련하여 항상주의해야합니다.자신의 iPhone에서 sqlite INJECTION ATTACKS를 방지 하시겠습니까?

그러나 누군가의 휴대 전화에서 데이터를 (sqlite를 사용하여) 휴대 전화의 데이터베이스에 저장하는 경우에도 똑같이해야합니다.

그들이 할 수있는 나쁜 점은 무엇입니까? 자신의 휴대 전화에서 자신의 데이터 또는 테이블을 삭제 하시겠습니까? (실제로 열심히 노력한 경우)

감사합니다.

답변

1

예, IMHO가 필요합니다.

  1. 인젝션 공격의 대부분은, 예를 들면 모두 예기치 형성된 입력 처리, 정확성에 부착하여
    SQL 자리와 결합 변수를 방지 할 수있다 (예를 들어, "5 o'clock" 무고한 아포스트로피) 및 악성 입력 (예 : "' OR 1=1 --").
    따라서 데이터 처리를 철저히 수정하고 대부분의 주입에 대해 걱정하지 마십시오.

  2. 주사는 응용 프로그램 논리를 파괴 할 수
    SQLite는, 내가 생각하기에, 트리거를 가지고 있지만 어떤 경우 응용 프로그램 등 환경의 다른 측면을, 공격, 로컬 DB에서 가져온 데이터를 기반으로 의사 결정을 내릴 수있는 경우, 현재의 응용 프로그램 ISN 이것을 위해 충분히 복잡한, 내일의 회전 속도가있을 것이다.

  3. 누군가가 (공격하는) 다른 사람이 전화를 사용하는 것일 수도 있습니다.
    사실 이것은 StackOverflow에 인증 된 데스크톱의 일반적인 위험입니다. 그러나 "스마트 폰"앱은 의도하지 않은 운영자의 위험에 노출되어 있습니다. 많은 휴대 전화에는 암호가없고 많은 앱에서 재 인증을 자주 요구하지 않으며 사용자는 빠른 전화를 걸 필요가있는 사람들에게 휴대 전화를 자유롭게 줄 수 있습니다.

+0

"5시 방향"해킹 또는 삽입과 같은 항목이 데이터베이스를 어떻게 공격합니까? 다른 사람에게 내 전화를 건 경우 ... 데이터, 연락처, 앱 등을 자유롭게 삭제할 수 있으므로 "약간의 주입 코드를 작성합니다"는 아마도 시도 할 가능성이 가장 적은 항목 일 것입니다. – Susanna

+0

@Kimberly, "o'clock"은 악의적 인 의도가 아니 어서 단순히 응용 프로그램을 손상 시키거나 부적절하게 거부 할 수 있습니다. 두 번째 질문에 관해서는 정중하고 즉각적인 공격이 어리석게 사용자에 의해 촉진된다고 상상할 수 있다고해서 더 약한 공격 벡터가 없다는 것을 의미하지는 않습니다. – pilcrow

0

는 내용를 신뢰하지 않는 원격 데이터베이스 와 아이폰 데이터베이스를 동기화하는 경우. 데이터베이스를 변경하기 위해 SQL 삽입을 사용하지 않습니다. jailbroken 아이폰은 sqlite 데이터베이스 파일을 포함하는 전체 파일 시스템에 대한 전체 액세스 권한을 사용자에게 부여하지만 공격자가 원하는대로 수정할 수 있습니다. 이것은 SQL 삽입이 아니며 "클라이언트 측 트러스트"취약점입니다.

sqlite에서의 SQL 주입은 공격자에게 유용합니다. MySQL과 달리 Sqlite는 쿼리를 스택 할 수 있으므로 공격자는 SQL 주입의 영향을받는 쿼리와 상관없이 항상/삭제/삽입/업데이트/삭제/선택 등의 작업을 수행 할 수 있습니다. MySQL에서는 서브 - 셀렉트 또는 유니온 - 인젝션을 사용하여 특정 데이터를 얻지 만, 예를 들어 셀렉트 된 명령문을 정상적인 조건에서 삽입 할 수는 없습니다.

+0

원격 데이터베이스와 '동기화'중이 아니며 모든 원격 데이터베이스를 사용하지 않습니다. 사용자가 실제로 내 휴대 전화를 훔쳐서 감옥에 갈 경우 ... 내 데이터베이스를 쉽게 삭제/추가/편집 할 수 있습니다. 어떤 식 으로든 MySql을 사용하지 않습니다. – Susanna

2
  • 이 필요합니까? - 예, '필수'입니다. 즉 가치가 있습니다. 이 컨텍스트 (유효 할 수도 있음)에서 보안에 대해별로 신경 쓰지 않더라도 정확성 (최소한 자존심 문제)에 대해 걱정해야합니다.

  • 일어날 수있는 최악의 상황은 무엇입니까?

    • 사용자 # 1 Patty O'Brian는 SQL 호출을 잇몸 필드에 그녀의 이름을 입력하고 실패합니다. 프로그램이이를 제대로 처리하지 못하거나 사용자가 왜 실패했는지 모호한 오류 메시지가 표시됩니다.
    • 사용자 # 2는 SQL 호출을 울리는 이름을 입력하고 성공합니다! 이 프로그램은 현재 알 수없는 상태입니다.

    어느 쪽이든, 지금은 사용자의 연락처 지원 및/또는 다시 돈을 요구한다 (이것은 훨씬 더 어려운 디버깅에있어 결코 그들이 한 일을 인정하지 사용자 # 2) 시간과 에너지을 먹는다.

+0

내 코드는 항상 작은 따옴표와 큰 따옴표를 올바르게 처리하지만 TRUE SQL 주입과 해킹에 대해 이야기하고있었습니다. – Susanna

관련 문제