2014-03-27 2 views
1

사용자에게 데이터베이스에 저장된 데이터를 입력 할 수있는 입력 필드가 있습니다. 몇 가지 용도로 사용자는 HTML을 사용할 수 있습니다.데이터베이스에 HTML을 저장하고 출력하는 모범 사례

값을 저장할 때 (html 포함) escape/encode하는 것이 가장 좋습니다. 또는 출력으로 인코딩하고 인코딩 할 수 있습니까?

편집이 : 그냥 대부분의 사람들이 텍스트를 인코딩하는 것은 DB에 그것은 탈출 항상 좋은이 article

+0

와 같은 문자열을 인코딩합니다. –

+0

두 가지 문제가 있습니다. 첫 번째는 신뢰할 수없는 사용자 입력으로 인한 SQL 주입입니다. 두 번째는 콘텐츠를 표시 할 때의 XSS입니다. 두 가지 문제를 해결하는 답변을 기다리십시오. – jww

답변

0

에 의해 설명 나쁜 생각입니다 저장되는 것을 동의하는 경우보고 싶어/인코딩 사용자 입력에 넣어 전에 그렇지 않으면 SQL 인젝션 (SQL DB를 사용하는 경우)에 시스템을 노출시킬 수 있습니다.

0

html 특정 문자를 이스케이프 처리하는 것이 일반적인 방법입니다. 당신은 Apache Commons Lang

간단한 예에서 StringEscapeUtils를 사용할 수 있습니다

String htmlStr = "<h1>Hi</h1>" 
StringEscapeUtils.escapeHtml(htmlStr); 

이것은 당신이 아직 시도 한 내용을 공유 할 수 있습니다 더 통관에 대한 &lt;h1&gt;Hi&lt;/h1&gt;

+0

DB에 인코딩 된 버전을 저장하는 것에 대한 우려는 이제 데이터를 변형 한 것입니다. 이 [article] (http://lukeplant.me.uk/blog/posts/why-escape-on-input-is-a-bad-idea/)은 왜 저장된 것을 변형시키는 것이 나쁜지에 대한 자세한 설명을 제공합니다. 데이터. – Glide

+0

여러 가지 출력 미디어를 사용하는 경우 나쁘지는 않지만 문서의 인수를 고려해 볼 가치가 있습니다. – Santosh

+0

내 앱에 출력 미디어가 여러 개있는 경우 기사의 주장에 동의합니까? – Glide