2012-05-11 4 views
0

SQL 인풋으로부터 입력을 보호하는 것에 대해 생각하기 시작했습니다. 나는 PDO와 mysqli에 대해 읽었고 그 기술들을 사용할 것이다. SQL 주입에 대한 보호를 연구하는 동안 기술에 대해 생각했습니다. 사용자로부터의 입력이있을 때마다 입력 문자열을 검색하여 " '"또는 "DROP"항목을 검색 할 수 있으며 문자열에 해당 문자가 포함되어 있으면 계속 진행할 수 있습니다. 이 기술로 많은 SQL 주입을 방지 할 수 있습니까?PHP SQL 주입 방지 기술

도움 주셔서 감사합니다.

+0

PDO 만 사용하면 준비된 문을 사용할 예정이므로 주사를 방지 할 수 있습니다. 더 이상 아무것도 할 필요가 없습니다. – ccKep

+1

여기에 설명 된 SQL 인젝션을 예방하는 가장 좋은 방법은 http://stackoverflow.com/questions/60174/best-way-to-stop-sql-injection-in-php – itsmeee

답변

3

그냥 PDO 또는 SQLi를 사용하십시오.

올바르게 사용하고 의도 한대로 사용하면 둘 다 중지됩니다. 단어를 멈추는 것과 같은 측정을 사용하는 것은 어리석은 일입니다. 누군가가 'dropbox'를 입력하면 상상해보십시오.

+0

실제로 두 언어 모두 완전히 멈추고 준비된 진술 및 데이터 유효성 검사 수행되어야하며 항상 100 % 안전하지는 않습니다. 응용 프로그램의 모든 부분이 이러한 요구 사항을 따르지 않을지라도 여전히 가능성이 있습니다. – mhvvzmak1

4

엄격한 테스트를 거친 후에 직접 구현하는 방법을 사용하는 것이 가장 좋습니다.

원하는 해결 방법에 문제가 있습니다. SQL에서 테이블을 삭제하기위한 새로운 표기법을 추가하면 어떻게 될까요? 아니면 대신 'truncate'를 사용하면 어떨까요? 이것은 절대 안전한 것은 아닙니다.

2

입력을 피하고 준비된 문을 사용해보십시오. 이것은 거의 모든 SQL injection 취약점을 제거합니다. 특정 단어를 검색하는 것은 일반적으로 합법적 인 사용자를 괴롭 히고 결정적인 해커를 멈추게하지 않으므로 끔찍한 방법입니다.

-1

가장 좋은 방법은 사용자 데이터는 PDO가 제표를 작성과 함께, 이상입니다 보장하기 위해 엄격한 패턴에 대한 모든 사용자 입력의 유효성을 검사하는 것입니다 사용자가 올바르게 결과를 확인하지 못했고 사용자가 악의적 인 코드를 실행할 수있는 경우에도 사용자가 생성 한 결과가 표시됩니다.

+0

왜이 답변에 투표가 내려 졌습니까? 분명히 일부 아마추어는 데이터 무결성을 확인하고 안전한 조작을 보장하는 실제 방법이므로 모든 주요 개발에서이 패턴을 사용합니다. – mhvvzmak1