안녕 htmlspecialchars()를 사용할 적절한 장소가 언제인지 궁금합니다. 데이터를 데이터베이스에 삽입하기 전에 또는 데이터베이스에서 데이터를 검색하기 전에 있습니까?htmlspecialchars() 함수를 언제 사용합니까?
답변
데이터를 HTML에 에코 할 때만이 메서드를 호출해야합니다.
데이터베이스에 이스케이프 된 HTML을 저장하지 마십시오. 그것은 질의를 더 성가 시게 할 것이다.
데이터베이스는 HTML 표현이 아닌 실제 데이터를 저장해야합니다.
htmlspecialchars
EVERY HTML 내에서 콘텐츠를 출력 할 때 콘텐츠가 HTML이 아닌 콘텐츠로 변환됩니다.
콘텐츠를 HTML로 처리하도록 허용하면 최소한 버그에 대한 문호를 열었고 총 XSS 해킹은 최악의 경우입니다.
질문을 오해하고 있습니다. – SLaks
사용자가 입력 한 정확한 것을 데이터베이스에 저장하십시오. 다음 public으로 표시 할 때는 htmlspecialchars()
을 사용하여 xss 보호 기능을 제공합니다.
하지만 그는 그렇게하기 위해 ** WHY **에게 물어보고 있습니까? 당신은 대답에 이유를 제시하지 않았습니다. 편집 해보십시오. –
가이드 - 당신은 1 개 간단한 개념을 이해해야합니다 시작하려면 PHP
에 반드시 htmlspecialchars() 함수를 사용하는 방법 : 렌더링합니다.
렌더링은 무엇입니까? HTML이 안녕하세요처럼 굵게
<b>Hello</b>
를 변환 할 때 가 렌더링이다. 렌더링됩니다.
그래서 ... 언제 htmlspecialchars() 함수를 사용합니까?
어디서나 HTML 콘텐츠를 렌더링하고 싶습니다. 당신이 jQuery를 사용하고이 작업을 수행 할 경우 예를 들어, :
$("#YourDiv").html("<b>Hello</b>");
DIV 내용 안녕하세요될 것입니다. 텍스트를 HTML로 렌더링했습니다.
이 방법으로 메시지 (사용자가 썼다) 표시하려면 :
<b>Hello</b>
당신은 넣어 가지고 : 헬로 렌더링되지 않습니다 그런 식으로
$("#YourDiv").text("<b>Hello</b>");
합니다. 당신은 텍스트 상자, 텍스트 영역 등으로 (사용자가 쓴) 메시지를로드하려면
... 당신은 넣어 가지고
<input type="text" class="Texbox1" value="">
<script>
$(".Textbox1").val("<b>Hello</b>");
</script>
표시됩니다 그
<b>Hello</b>
내부 문제없이 Textbox.
결론 : 지금까지 데이터 등 양식,에 사용자 입력이 ... 일반적으로 데이터를 저장 무엇
. 기능을 사용하지 마십시오. 사용자가 12345를 그대로 보내면 저장합니다. 아무것도 필터링하지 마십시오. 페이지의 데이터를 사용자에게 표시 할 때만 필터를 적용하면됩니다. 당신이 렌더링을 원하는지 또는 사용자가 쓴 것을 결정할 것인지를 결정합니다. *기억.
감사합니다.
필요한 경우. –