PHP에서 사용자 입력 데이터와 협력합니다. 더 나은 것은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1820754

  •  10-07-2019
  •  | 
  •  

문제

삽입 할 수있는 바람직하지 않은 태그와 관련하여 사용자가 입력하는 데이터를 관리하는 가장 좋은 방법을 찾으려고 노력하고 있습니다.

  • strip_tags () - 태그가 제거되고 데이터베이스에 삽입되지 않습니다.
  • 태그는 데이터베이스에 삽입되지만 해당 필드를 읽고 사용하는 사용자에게 표시 할 때 htmlspecialchars ()

더 나은 점은 무엇이며, 이들 중 어떤 것도 있습니까?

문안 인사

도움이 되었습니까?

해결책

이것은 당신의 우선 순위가 무엇인지에 따라 다릅니다.

  • 사용자 입력 (예 : stackoverflow)에서 특수 문자를 표시하는 것이 중요하다면이 정보를 데이터베이스에 저장하고 디스플레이에 소독해야합니다. htmlspecialchars() 출력을 표시하려면 (더 정교한 것이 아닌 경우)
  • 평범한 텍스트 주석을 원한다면 사용하십시오 strip_tags() 데이터베이스에 고정하기 전에 -이 방법으로 저장해야 할 데이터의 양을 줄이고 화면에 데이터를 표시 할 때 처리 시간을 줄입니다.

다른 팁

태그는 데이터베이스에 삽입되지만 해당 필드를 읽고 사용자에게 표시 할 때 htmlspecialchars ()를 사용합니다.

이것. 당신은 일반적으로 사람들이 덜 표지판과 앰퍼 샌드를 입력하고 페이지에 그와 같이 표시되기를 원합니다. htmlspecialchars 모든 텍스트-html 출력 단계 (텍스트가 사용자 입력 또는 데이터베이스에서 직접 또는 다른 곳에서 직접 온 것인지)에서이를 달성하기에 올바른 방법입니다. 입력을 엉망으로 만드는 것은 출력 인코딩 문제를 다루는 데 적합하지 않은 전술입니다.

물론, 당신은 텍스트를 SQL 끈.

사용자 입력을 확보하기 위해 취한 측정 값은 데이터가 사용되는 컨텍스트에 전적으로 의존합니다. 예를 들어:

  • SQL 데이터베이스에 삽입하는 경우 매개 변수화 된 문을 사용해야합니다. PHP mysql_real_escape_string() 도 괜찮게 작동합니다.
  • HTML 페이지에 표시하려면 HTML 태그를 벗기거나 탈출해야합니다.
  • 일반적으로 사용자 입력을 다른 형태의 마크 업이나 다른 언어와 혼합 할 때마다 언어의 요소는 해당 컨텍스트에 넣기 전에 입력에서 벗어나거나 제거해야합니다.

위의 마지막 요점은 다음 지점으로 향합니다. 많은 사람들이 원래의 입력을 항상 유지해야한다고 생각합니다. 이것은 나중에 다른 방식으로 데이터를 사용하기로 결정하고 예를 들어 HTML 태그가 새로운 맥락에서 큰 문제가되지 않을 때 많은 의미가 있습니다. 또한 사이트가 어떤 식 으로든 손상되면 정확한 입력에 대한 기록이 있습니다.

HTML 페이지에 디스플레이를위한 사용자 입력의 HTML 태그와 관련하여 : 사용자가 HTML 태그를 입력 할 수있는 이유가있는 경우, 간단히 탈출하십시오. 그렇지 않은 경우 디스플레이 전에 제거하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top