올바른 형식의 HTML 만 허용해야합니다.
그런 다음 LINQ to XML을 사용하여 구문 분석하고 수정할 수 있습니다.
사용자로부터 요소를 가져 와서 허용 목록에있는 태그 및 특성 집합을 가진 새로운 요소를 반환하는 재귀 함수를 만들 수 있습니다. 예를 들어
:
//Maps allowed tags to allowed attributes for the tags.
static readonly Dictionary<string, string[]> AllowedTags = new Dictionary<string, string[]>(StringComparer.OrdinalIgnoreCase) {
{ "b", new string[0] },
{ "img", new string[] { "src", "alt" } },
//...
};
static XElement CleanElement(XElement dirtyElement) {
return new XElement(dirtyElem.Name,
dirtyElement.Elements
.Where(e => AllowedTags.ContainsKey(e.Name))
.Select<XElement, XElement>(CleanElement)
.Concat(
dirtyElement.Attributes
.Where(a => AllowedTags[dirtyElem.Name].Contains(a.Name, StringComparer.OrdinalIgnoreCase))
);
}
당신이 하이퍼 링크, javascript:
URL을 허용해야합니다 허용하는 경우; 이 코드는 그렇게하지 않습니다. 당신이 입력에서 원치 않는 태그를 제거 할 수 있습니다 HtmlAgilityPack와
좋은 질문입니다. 이것은 HTML 코드를 제출하고 표시 할 때마다 내 목록의 맨 위에 있습니다. 일반적으로 저는 결과를 확인하고 결과를 확인해야합니다 (예 : ASP.NET의 www.freetextbox.com과 같은) 결과를 포맷하고 살균하는 컨트롤을 사용합니다. 너무. +1 질문. – Codesleuth