2010-08-13 2 views
1

MVC 2 .net 4 웹 사이트에서 간단한 '사이트 뉴스'기능을 만들고 있습니다. 사이트 뉴스 기사는 간단한 SQL 데이터베이스에 보관되며 실제로 Entity Framework Code First와 compact SQL로 구성되며 articleID, articleDate articleSummary 및 articleDetail (아래 코드의 model.ItemEntry)로 구성됩니다. articleDetail은 TinyMce 또는 다른 WYSIWYG 편집자가 편집자를 제안하거나 권장 할만한 이유가 있거나 그 이유가 있다면 편집자가 편집하고자하는 텍스트 영역입니다.htmlencode TinyMce/textarea to SQL MVC 2 .net 4

TinyMce에서 textDelay에 텍스트를 입력하는 방법을 찾고 있는데, textarea는 html로 인코딩 된 텍스트와 htmlencode를 포함 할 수 있습니다. 텍스트 영역은 테이블의 행에 기록됩니다. 가능성이있는 구성 옵션이 될 것 같아서 찾지 못했습니다. 그리고 htmlencoding에 의해 textarea는 TinyMce/textarea 데이터를 SQL에 저장하려고 시도하면서 발생하는 모든 어려움을 피할 수 있습니다.

나는 이것을 주로 배우는 경험으로 사용 하겠지만. 그리고 저는이 일을하는 법을 배우고 싶어서 조금 완고합니다. 그렇지 않으면 텍스트 영역을 사용하고 간단한 응용 프로그램을 위해 WYSIWYG를 건너 뜁니다.

TinyyMce를 사용하여 간단한 텍스트를 작성하는 동안 .net 4 및 requestvalidation 문제가 발생했습니다. 웹 설정에서 <httpRuntime requestValidationMode="2.0" />을 배치하고 내 컨트롤러에 [ValidateInput(false)]을 추가하여 내 보안을 완화해야 할 것으로 보입니다. 닷넷 4가 제공하는 보안을 완화하고 싶지는 않지만 TinyMce/textarea에서 html을 제거하는 방법에 대해 다소 고착되었습니다.

이 시점에서 나는 실제로하고 싶은 것은 articleDetail에 html 형식을 지정하는 것이 중요 할 수 있으므로 텍스트를 htmlencode하는 것이 었습니다. 블로그 게시물 및 기타 응용 프로그램은 SQL에서 정보를 저장합니다. 결국 HTML이 될 것입니다. 어떻게 처리합니까? 요약

(일부) 내 질문

  • 은 콘텐츠를 대해 HTMLEncode 어떤 WYSIWYG 에디터가 있습니까입니까? 그렇게하면 htmlencoded HTML 뉴스 기사를 SQL에 저장할 수 있습니다. 그러면 htmldecode를 시도하여 뉴스 기사가 표시 될 때 표시 할 것입니다.

번갈아

  • 어떻게 그냥 내가 SQL로 저장하기 전에 스트립에게 TinyMCE에/텍스트 영역에서 HTML을 단순화 할 수 있는가?

  • 내 유일한 해결책은 requestValidationMode = "2.0"입니다.

연구 자료이 학습 경험에서 도움이되는 것으로 나타났습니다.

Ack! 이것이 내 첫 게시물이기 때문에 게시 할 수 없습니다. 나는 FAQ를 읽고 좋은 Nerditquette 녀석이었습니다. 부수적으로 나는 이것을 라이브 작가 (live writer)에서 작곡했으며, 내가 연구하고 도움이되는 링크를 포함하여 내 블로그에 here이라는 글을 올렸다.

일부 관련 소스 코드입니다.

만들기.영문

<script type="text/javascript"> 
tinyMCE.init({ 
    mode: "textareas", 
    theme: "simple" 
}); 

  <div class="editor-label"> 
      <%: Html.LabelFor(model => model.ItemEntry) %> 
     </div> 
     <div class="editor-field"> 
      <%: Html.TextAreaFor(model => model.ItemEntry) %> 
      <%: Html.ValidationMessageFor(model => model.ItemEntry) %> 
     </div> 

NewsController.cs

 // POST: /News/Create 

    [HttpPost] 
    // [ValidateInput(false)] 
    public ActionResult Create(Item item) 
    { 
     if (ModelState.IsValid) 
     { 
      siteNews.Items.Add(item); 
      siteNews.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
      return View(item); 
    } 

답변

0
  • 왜 그냥 데이터베이스에 저장하는 콘텐츠를 대해 HTMLEncode할까요? 그것은 쓸모없는 단계입니다.
  • 서식있는 텍스트 편집기를 사용하는 경우 왜 html을 제거하겠습니까? 텍스트 만 원할 경우 텍스트 영역을 유지하십시오. bbtags를 사용하도록 tinyMCE를 구성 할 수 있지만 신뢰할 수없는 사용자에게만 사용합니다.
  • requestValidationMode를 2.0으로 설정하면 코드가 html을 저장하도록 허용 할 수 있습니다. 거기에 아무런 문제가 없습니다.
+0

내 생각에 htmlencode를 게시하기 전에 보안 문제를 피할 수있었습니다. htmlencode를 사용하거나 사용하지 않고 정보를 조작하는 방법을 배우려고합니다. requestValidationMode를 2.0으로 설정하면 .net 4의 보안 강화 기능을 제거하는 전체 사이트가 아닌가요? – jeffa

+0

.net 4. 모든 요청의 유효성이 검사됩니다 (웹 서비스/http 모듈/처리기). 결과적으로 유효성 검사는 요청에서 너무 일찍 일어나므로 [ValidateInput (false)] 속성을 사용하는 동작은 런타임에서 결코 볼 수 없습니다. – ZippyV