2011-03-10 3 views
2

나는 내 웹 사이트에서 블로그 엔진을 만드는 중입니다. 멋진 일은 없어. 사용자는이 질문의 문제점 인 주석 자체를 포함하여 몇 가지 기본 정보를 등록합니다.사용자가 게시 한 블로그 덧글 만들기

코멘트 필드 안에는 사용자가 텍스트를 쓸 수 있지만, 현재 거기에 아무 것도 쓰지 못하게하는 것은 아무것도 없습니다. 코멘트가있는 페이지를 렌더링 할 때 페이지가 엉망이됩니다.

은 그래서 가장 쉬운 방법은 다음 세 가지 작업이 더 유해한 HTML 스크립트를 실행할 수있는 텍스트 상자에 기록되어 있지 않은지 만들기

  • (뭔가 .NET에 내장 :)을 기대)하는 달성하기 위해 무엇을 궁금하네요 , 또는 주석을 추가 한 후 모든 사용자에 대해 오류가있는 페이지를 렌더링하도록 할 수 있습니다.
  • <a>, <b> 등의 태그를 허용하고 싶기 때문에 사용자가 텍스트의 서식을 지정하고 링크를 제공 할 수 있습니다.
  • 사용자가 글을 작성했을 때처럼 HTML로 렌더링 될 때 주석이 동일하게 보이도록 메시지의 모든 줄 바꿈을 처리해야합니다. 현재 모든 줄 바꿈은 HTML 내용의 표준으로 무시됩니다.

답변

1

을 할 수 있습니다 SQL Injection을 피하기 위해 데이터베이스에 How To Protect from SQL Injeciton in ASP.NET이라는 MSDN 문서가 있습니다.

사용자가 코드를 직접 포맷 할 수있게하려는 경우 사용자는 악의적으로 코드를 열어서 코드를 두 번 이상 생각해야합니다. 우선 모든 태그에 일치하는 끝 태그가 있는지 확인하려고합니다. 왜냐하면 어떤 사람이 쓰는 경우 : <strong>Hello! 그 이후의 모든 텍스트가 굵게 표시되기를 원하지 않기 때문입니다.

당신이 방법을 사용할 수 있습니다

은 내가 추천 이러한 방법/라이브러리의 두 가지이 서로 다른 라이브러리의 몇 가지를 사용할 수 있습니다 acheive 돕기 위해 여기서 사용자는 [굵게] 텍스트 [/ 굵게]를 쓸 수있게 한 다음 다른 모든 것에 Html Encoding이라는 것을 사용합니다. 다음 쓰기 그래서 경우

<strong>this will not be in bold</strong>[bold]But this will![/bold]

가 출력 될 수있다 :

<strong>this will not be bold</strong>그러나이 뜻을!

다음 단계에 따라이를 acheive :

  • HTML 인코딩 텍스트
  • 당신의 BB 코드 태그 ([대담] 어떤되지 않음)에 대해서는 적절한 HTML과

교체 줄 바꿈을 사용하여 \r\n<br />으로 바꾸려면 Html 민첩성 팩을 확인하거나 String.Replace을 사용하십시오.

Jeffs blog post about Safe HTML and XSS을 읽고 싶을 수도 있습니다.

+0

위대한 링크와 설명에 대해 감사드립니다. 나는 지금 함께 뭔가를 채찍질 할 수있을 것이다. :) –

+0

링크를 이용해 주셔서 감사합니다. 그러나 이것은 Øyvind를 위해 더 좋을 것이라고 생각합니다 : http://eksith.wordpress.com/2011/06/14/whitelist-santize -htmlagilitypack/ HTMLAgilityPack을 사용하고 태그 수를 제한합니다. 또한 나중에 WYSIWYG를 구현해야하는 경우 유용 할 것입니다. – eksith

1

가장 좋은 제안은 위키 코드 또는 게시판 코드 (BBCode)를 사용하는 것입니다.

  • http://bbcode.codeplex.com/ : 내 개인 프로젝트 당신이 텍스트 입력 구성 귀하의 코멘트에 BBCode를 사용할 수 있도록 파서 엔진이다 "Codekicker의 BBCode"라는 CodePlex의 프로젝트를 사용하던 중 한 일부 사용자 지정 개발에서

의미를 확장하고 더 많은 BBCode 태그를 추가하는 것은 어렵지 않지만 기본적으로 제공되는 것만으로는 충분하지 않습니다. -.

나는 wiki 코드 엔진을 통합 한 적이 없지만 Screwturn Wiki의 소스 코드를 다운로드하고 wiki 코드 파서를 제거하고 자신의 솔루션 (GPL)에 사용할 수 있습니까? 저자 고지와 라이센스를 남겨두면 할 수 있습니다! - :

당신은 표준 XHTML/HTML 요소를 허용 할 수 있지만,이 같은 파서를 사용하는 것이 좋습니다 것입니다.

내 humild 의견은 위키 코드 파서는 BBCode는보다 더 나은,하지만 어쩌면 당신의 요구 사항과 BBCode는 당신이 값을 추가 할 때 적절한 방법을 사용하는 것이 있는지 확인하려면 좋은 결혼 :

관련 문제