2009-05-01 6 views
2

현재 웹 사이트의 관리자 섹션에서 작업하고 있습니다. 관리자는 infragistics WebHtmlEditor 도구를 사용하여로드 할 페이지에로드 될 페이지의 마크 업을 만들 수 있습니다.웹 서식있는 텍스트 편집기를 통해 HTML 마크 업을 저장 했습니까?

이 마크 업을 데이터베이스에 저장하는 가장 좋은 방법은 무엇입니까? WebHtmlEditor에 의해 생성 된 HTML을 varchar 필드에 저장해야합니까? 이 문제가 있습니까? 예 : 마크 업이 손실되거나 DB에 문제가 발생합니까?

감사합니다.

답변

2

데이터베이스에 직접 저장하고 유형 및 길이를 의식하십시오. nvarchar (max) 열이어야합니다 찾을 수 있습니다. 컨트롤에서 값을 수집하고 DB로 전달하는 것 사이에 변환을 수행하지 않는다고 가정하면 마크 업을 잃지 않아야합니다.

+0

ntext 대신 nvarchar (max)를 사용하게되어 매우 기쁩니다. – DForck42

+1

왜 nvarchar를 통해 varchar를 사용해야하는 이유는 무엇입니까? – Fermin

1

HTML 및 SQL에 문제가 있다고 생각하지 않습니다. 선택 후 삽입/제거하기 전에 이스케이프 및 이스케이프 해제를 잊지 마십시오.

0

데이터베이스는 주어진 원시 데이터를 저장합니다. 이 시점에서 아무 것도 할 필요가 없습니다. HTML과 그 varchar 필드에 저장된 모든 내용을 HTML 페이지로 출력하면 정상적으로 작동합니다.

mysql_real_escape_string();을 호출하는 것을 잊지 마십시오. WebHtmlEditor의 출력 값을 데이터베이스에 저장하기 전에 SQL 쿼리에서 오류를 발생시키지 않도록 해당 값 (또는 해당 언어)을 WebHtmlEditor 출력의 게시 값에 적용해야합니다.

+0

아니라, 실제로 SQLSERVER에 대한 태그입니다. –

3

SQL은 문제가 아니지만 관리자가 Word에서 붙여 넣기가 허용되면 저장하기 전에 마크 업을 정리해야합니다. 내가 WebHtmlEditor 모르지만, 당신은 쉽게 테스트 할 수 있습니다 워드에서 붙여 넣기

style="mso-fareast-font-family: 'Times New Roman'; mso-ansi-language: EN-US; 
    mso-fareast-language: EN-US; mso-bidi-language: AR-SA; 
    mso-bidi-font-family: 'Times New Roman'; mso-highlight: yellow" 

또는

<p class="MsoNormal"> .. </p><o.p></o.p> 

또는 추가 <span><div> 태그를 많이 같은 것들을 얻을 수 있다면, 당신이 원하는 것 마크 업을 저장하기 전에 클린업하십시오. 어쩌면 온라인 데모를 사용하여 테스트 한 다음 편집기에서 HTML보기 버튼을 클릭 할 수도 있지만 편집자가 저장시 정리할 수 있는지 여부는 알 수 없습니다.

브라우저는 Word에서 붙여 넣는 것과 다르게 반응하므로 WebHtmlEditor를 사용하여 정리하면 다른 브라우저를 사용하여 테스트해야 할 수 있습니다.

일부 리치 텍스트 편집기는 "Word에서 붙여 넣기"라는 특수 버튼을 제공하지만 실제로는 "일반 텍스트로 붙여 넣기"로 작동 할 수 있습니다. 그러면 관리자가 사용을 중지 할 수 있습니다. (물론 관리자 단순히 사용하는 것을 잊어 버릴 수 있으므로 그러한 버튼이 있더라도 정리가 필요합니다.)

1

저장하는 HTML의 크기와 문자 인코딩에 따라 다릅니다.

이 게시물은 SQL Server 태그이므로 현재 VARCHAR (MAX)는 8000 자입니다.

이상인 경우 TEXT 유형을 사용할 수 있습니다.

TEXT 필드가있는 Cavaet은 LIKE 쿼리, UNION, 복제 문제 등을 사용할 수있는 기능을 제한하기 때문에 있습니다.

당신은 또한 유니 코드 유형 NVARCHAR 및 NTEXT을 고려할 수 있지만, 이러한 콘텐츠의 경우가 1

대신 문자 당 2 바이트를 사용하기 때문에 이러한 VARCHAR 및 TEXT로 두 배의 저장을 차지 고급 캐릭터 셋을해야하는 경우 사용자가 HTML을 허용하기 시작하면 XSS 주입 공격에 대해 매우주의해야합니다.이 공격은 중지하기가 거의 불가능합니다.

VARCHAR : http://msdn.microsoft.com/en-us/library/aa258242(SQL.80).aspx 텍스트 : http://msdn.microsoft.com/en-us/library/aa260619(SQL.80).aspx

XSS 공격 : http://en.wikipedia.org/wiki/Cross-site_scripting

관련 문제