2015-01-08 3 views
0

사용자가 메시지 피드에 텍스트를 게시 할 수 있습니다. 그들은 원하는대로 타이핑 할 수 있습니다.필요한 경우를 제외하고 텍스트가 HTML로 작성되지 않습니다.

백엔드 서버는 링크 및 다른 링크 가능 요소 (예 : 다른 사람을 태그 지정)가 있음을 감지 한 후 이러한 링크를 데이터베이스에 저장합니다. 사용자가 메시지의 전체 목록을 제공됩니다

, 그들은 사용자가 게시 된 것을 표시 얻을, 그리고 링크를 될 운명이되었다 어떤 사람이 www.foobar을 입력 예를 들어 링크

로 설정되어 .com 게시물이 표시됩니다. <a href='www.foobar.com'>www.footbar.com</a>

위대한 작품이지만, 누군가가 스스로 HTML을 입력하면 어떻게됩니까? 먼저 포맷팅을 망쳐 놓을 것이고 두 번째로 사용자가 명백한 이유로 위험 할 수있는 자신의 HTML을 게시 할 수 있습니다.

내가 의도 한 HTML이 아닌 한 API에서 되돌아 오는 텍스트를 HTML로 변환하지 않아야합니다. HTML을 게시하려고하는 사람을 막으려 고하지 않으려 고합니다. HTML로 전환하는 것을 막으십시오.

트위터가 올바르게 작동합니다. 나는이

<a href='www.foobar.com'>www.footbar.com</a> 

을 트위터에 게시 할 경우, 그것은 당신이 볼을 정확히 저를 보여줄 것이다, 그러나 www.foobar.com 강조하고 클릭합니다. 이와 관련없는 있지만, 나는 프런트 엔드

UPDATE 나는 텍스트를 표시하려면 다음 코드를 사용하고

에 대한 ASP.NET 웹 API 백엔드와 Knockout.JS을 사용하고

(녹아웃 JS observables)

<div data-bind="foreach: allMessages"> 
    <span data-bind="html: theText"></span> 
+0

나는 다른 끝에서 문제에 접근 할 것이다. 사용자로부터'HTML '입력을 차단하십시오. 그렇지 않으면 모든 종류의 오류가 발생하는 심각한 문제에 직면하게됩니다. – melancia

+1

UI로 출력 할 때 텍스트를 HTML로 인코딩 할 수 있습니까? – David

+0

http://stackoverflow.com/questions/23403468/how-to-display-input-type-text-without-creating-a-textbox-in-jquery/23403574#23403574 도움이 될만한 메시지 –

답변

1

백엔드 코드는 들어오는 데이터를 인코딩해야합니다. 그러면 html 태그가 텍스트 기반으로 바뀝니다. 예는 <div>test</div>%3Cdiv%3Etest%3C/div%3E로 변경됩니다. 이렇게하면 원하지 않는 데이터가 데이터베이스에 저장되는 것을 방지 할 수 있습니다.

+0

이것은 내가 무엇을했는지입니다. 내 HTML 이해의 부족 도움이되지 않았지만 귀하의 예제를 올바른 방향으로 나를 설정 – MichaelMcCabe

관련 문제