2012-10-21 2 views
-1

PHP 매뉴얼과 사용자 피드백은 모두 혼란 스럽습니다. 다른 사람의 코드를 수정하려고합니다. 여기서 모든 양식 데이터를 ASCII 코드로 변환 한 다음 되돌려 놓았습니다.PHP escape string madness

이것은 모든 것을 탈출하기위한 근본적인 방법으로 수행되었지만 유지 관리가 어려우며 데이터베이스는 쿼리 가능한 데이터베이스 대신 여러 개의 쉼표로 구분 된 숫자처럼 보입니다. 확실히 PHP에는 폼 값을 저장하고 너무 많이 왜곡하지 않고 검색 할 수있는 확실한 방법이 있습니다. 다양한 escapeunescape 함수는 모든 것을 벗어나는 것처럼 보이지 않습니다.

또한 이것을 확인하고 설정해야하지만 다른 설정이 없는지 확인해야합니다. 뭐라 구요? 간단히 말해 폼 필드에있는 것이 무엇이든간에 MySQL 컬럼에 안정적으로 작성되어야하며 PHP로 다시 검색하고 mysql에서 쿼리 할 수 ​​있어야합니다. 양식은 인트라넷에 있으며 데이터에는 달러 기호, 백분율 기호, 슬래시 및 아포스트로피를 포함하여 모든 일반 키보드 입력이 포함될 수 있습니다.

답변

2
  1. PHP의 이전 버전을 사용하는 경우 : PHP를 업그레이드하거나 최신 PHP를 갖춘 더 나은 호스팅으로 이동하십시오. 실패 : PHP 설정에서 마술 따옴표를 사용하지 않습니다. 또한 실패 : detect and undo magic quotes. 마술 따옴표는 끔찍한 생각이었고 PHP에서 삭제되었습니다. 데이터베이스에 데이터를 삽입 할 때, HTML, escape special characters에 데이터를 삽입 할 때 prepared statements and parameterized queries
  2. 이 (인용 옵션은 당신이 당신의 속성 값을 둘러싸는 따옴표의 유형에 대해 올바르게 설정되어 있는지 확인 사용
  3. 은, 기본은 value="<?php echo ... ?>"을위한 안전 대신 '을 사용하는 경우는 제외). 보다 복잡한 시나리오는 the OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet을 참조하십시오.
+0

php 5.3.3 이것은 신뢰할 수있는 인트라넷 응용 프로그램이며 우리는 크로스 사이트 스크립팅과 SQL 주입에 지나치게 신경을 쓰지 않습니다. 아무것도 저장하지 않고 양식 데이터를 가져오고 싶을뿐입니다. 그래서 당신은 매개 변수화 된 쿼리를 사용해야하고 특수 문자를 이스케이프 처리해야하고 올바른 인용 부호 등을 사용해야한다는 것을 말하고 있습니까? 코드의 맨 위에서 마술 따옴표를 끄는 것 (쉬운 부분) 이외에도 모든 문자를 그대로 사용하여 단일 양식 필드를 삽입하고 검색하는 명령문 예제 세트는 무엇입니까? 이스케이프 특수 문자에 PHP 매뉴얼 멋진 메리 돌고래입니다. 상황이 확실한 펄 매뉴얼에 사용됩니다. – chris

+0

"신뢰할 수있는 인트라넷 앱이며 사이트 간 스크립팅 및 SQL 삽입에 지나치게 신경을 쓰지 않습니다."- ** 걱정 **. 사람들은 오타를 만든다. 완벽하게 좋은 데이터는 SQL을 깨뜨릴 수 있습니다. 직원들은 불만을 가질 수 있습니다. – Quentin

+0

"그렇다면 매개 변수가있는 쿼리를 사용하고 특수 문자를 이스케이프 처리해야하고 올바른 인용 부호 등을 사용해야한다는 것을 말하는 것입니까?" - 예. "진술의 예 세트는 무엇입니까?"- 링크가이를 설명합니다. "이스케이프 특수 문자에 대한 PHP 매뉴얼은 멋진 회전 목마입니다."- 답변에 설명 된 시나리오를 다루는 경우 HTML 문서에 삽입하는 문자열에'htmlspecialchars'를 호출하고 반환 값을 삽입하십시오 대신. – Quentin