2016-06-16 11 views
1

데이터베이스 연결없이 mysqli_escape_string 함수를 사용할 수없는 이유는 무엇입니까? the documentation에서mysqli_escape_string에 데이터베이스 연결이 필요한 이유는 무엇입니까?

+0

데이터베이스 연결이 없으면 주입이 불가능하므로 질문하는 것이 정확히 무엇입니까? – Matt

+5

인용 부호 등이 PHP가 아닌 이스케이프 처리 방법을 알고있는 데이터베이스이기 때문에; 그래서 PHP는 데이터베이스가 그것을 할 수있게합니다. –

+0

는 질문을 업데이트했습니다. –

답변

4

: SQL 문에 사용되는 문자열에

탈출 특수 문자, 계정에 연결 그것은 연결이있다

의 현재 문자 집합을 복용 있도록 는 데이터베이스를 이스케이프 처리하는 데 올바른 규칙을 사용할 수 있도록 데이터베이스가 사용하는 문자셋을 알고 있습니다.

2

콴틴의 답변은 그것을 본질로 끓여줍니다.

나는 또한 추가하고 싶습니다, 이미 언급 쿠엔틴으로 그

  • 는 문자 집합은 활성 연결의 맥락에서 알려져있다 - 그리고 탈출에 필수적이다.
  • 일반적으로 연결 개체는 코드를 필요로하는 코드의 일부에서 사용할 수 있어야합니다. 탈출 할 때마다 연결을 사용해야 할 가능성이 큽니다. 문제가 "코드의이 부분에서 연결 개체에 연결할 수 없다"면 문제를 해결해야합니다.
  • 그리고 제발 자신이 PHP에서 mysqli_escape_string의 동작을 복제하려고하지 마십시오! 이것은 잠재적으로 공격자에게 취약하게 만듭니다. "\"으로 변환하는 것이 쉽지 않다고 가정하지 마십시오!

# 2와 # 3을 자세히 살펴보십시오. 이 질문을하면 프로젝트에 어떤 종류의 아키텍처 문제가 있다고 가정합니다.