데이터베이스 연결없이 mysqli_escape_string
함수를 사용할 수없는 이유는 무엇입니까? the documentation에서mysqli_escape_string에 데이터베이스 연결이 필요한 이유는 무엇입니까?
1
A
답변
4
: SQL 문에 사용되는 문자열에
탈출 특수 문자, 계정에 연결 그것은 연결이있다
의 현재 문자 집합을 복용 있도록 는 데이터베이스를 이스케이프 처리하는 데 올바른 규칙을 사용할 수 있도록 데이터베이스가 사용하는 문자셋을 알고 있습니다.
2
콴틴의 답변은 그것을 본질로 끓여줍니다.
나는 또한 추가하고 싶습니다, 이미 언급 쿠엔틴으로 그
- 는 문자 집합은 활성 연결의 맥락에서 알려져있다 - 그리고 탈출에 필수적이다.
- 일반적으로 연결 개체는 코드를 필요로하는 코드의 일부에서 사용할 수 있어야합니다. 탈출 할 때마다 연결을 사용해야 할 가능성이 큽니다. 문제가 "코드의이 부분에서 연결 개체에 연결할 수 없다"면 문제를 해결해야합니다.
- 그리고 제발 자신이 PHP에서
mysqli_escape_string
의 동작을 복제하려고하지 마십시오! 이것은 잠재적으로 공격자에게 취약하게 만듭니다."
을\"
으로 변환하는 것이 쉽지 않다고 가정하지 마십시오!
# 2와 # 3을 자세히 살펴보십시오. 이 질문을하면 프로젝트에 어떤 종류의 아키텍처 문제가 있다고 가정합니다.
데이터베이스 연결이 없으면 주입이 불가능하므로 질문하는 것이 정확히 무엇입니까? – Matt
인용 부호 등이 PHP가 아닌 이스케이프 처리 방법을 알고있는 데이터베이스이기 때문에; 그래서 PHP는 데이터베이스가 그것을 할 수있게합니다. –
는 질문을 업데이트했습니다. –