C#에서 tinyMCE 서식있는 텍스트의 소스 코드를 살균하는 유틸리티/함수가 있습니까? 위험한 태그를 제거하고 싶지만 안전한 HTML 태그를 허용하고 싶습니다.ASP.NET에서 MCE의 입력을 살균하는 방법은 무엇입니까?
4
A
답변
4
당신이 사용할 수있는 C#을위한 내장 된 살균제가 없다고 생각하지만 여기에는 같은 문제가있을 때했던 것이 있습니다. AjaxControlToolkit과 함께 제공되는 HtmlAgilityPackSanitizerProvider를 사용했습니다. 코드는 다음과 같습니다.
private static AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider sanitizer = new AjaxControlToolkit.Sanitizer.HtmlAgilityPackSanitizerProvider();
private static Dictionary<string, string[]> elementWhitelist = new Dictionary<string, string[]>
{
{"b" , new string[] { "style" }},
{"strong" , new string[] { "style" }},
{"i" , new string[] { "style" }},
{"em" , new string[] { "style" }},
{"u" , new string[] { "style" }},
{"strike" , new string[] { "style" }},
{"sub" , new string[] { "style" }},
{"sup" , new string[] { "style" }},
{"p" , new string[] { "align" }},
{"div" , new string[] { "style", "align" }},
{"ol" , new string[] { }},
{"li" , new string[] { }},
{"ul" , new string[] { }},
{"a" , new string[] { "href" }},
{"font" , new string[] { "style", "face", "size", "color" }},
{"span" , new string[] { "style" }},
{"blockquote" , new string[] { "style", "dir" }},
{"hr" , new string[] { "size", "width", "id" }},
{"img" , new string[] { "src" }},
{"h1" , new string[] { "style" }},
{"h2" , new string[] { "style" }},
{"h3" , new string[] { "style" }},
{"h4" , new string[] { "style" }},
{"h5" , new string[] { "style" }},
{"h6" , new string[] { "style" }}
};
private static Dictionary<string, string[]> attributeWhitelist = new Dictionary<string, string[]>
{
{"style" , new string[] {}},
{"align" , new string[] {}},
{"href" , new string[] {}},
{"face" , new string[] {}},
{"size" , new string[] {}},
{"color" , new string[] {}},
{"dir" , new string[] {}},
{"width" , new string[] {}},
{"id" , new string[] {}},
{"src" , new string[] {}}
};
public string SanitizeHtmlInput(string unsafeStr)
{
return sanitizer.GetSafeHtmlFragment(unsafeStr, elementWhitelist, attributeWhitelist);
}
희망이 있습니다.
1
HTML 문서를 살균하는 것은 많은 까다로운 작업이 필요합니다. 이 패키지는 도움이 될 것입니다 : https://github.com/mganss/HtmlSanitizer 나는 내 자신의 프로젝트에 사용합니다.
관련 문제
- 1. 사용자 입력을 살균하는 것이 안전합니까?
- 2. mysql없이 PHP 입력을 살균하는 방법
- 3. PHP 및 sqlsrv 드라이버로 입력을 살균하는 방법은 무엇입니까?
- 4. 레일에서 SQL을 살균하는 방법은 무엇입니까?
- 5. 준비된 PDO 문을 사용하여 입력을 살균하는 설명
- 6. jsonp의 콜백을 살균하는 가장 좋은 방법은 무엇입니까?
- 7. 작은 MCE의 style_formats 제목
- 8. mb_convert_encoding을 호출하여 텍스트를 살균하는 이유는 무엇입니까?
- 9. 요청 유효성 검사가 MVC 4의 제자리에 입력되기 전에 입력을 살균하는 방법은 무엇입니까?
- 10. PHP/MYSQL : 사용자 입력을 살균하는 것은 좋지 않은 생각입니까?
- 11. 자바 스크립트로 입력을 살균하는 더 좋은 방법이 있습니까?
- 12. 메일 링하기 전에 PHP에서 사용자 입력을 살균하는 방법?
- 13. 작은 mce의 이미지 중첩 문제
- 14. sqlite 데이터베이스에 저장하기 위해 문자열을 살균하는 방법은 무엇입니까?
- 15. 레일에서 속성 값을 살균하는 방법
- 16. ASP.NET에서 캐시하는 방법은 무엇입니까?
- 17. 사용자 입력 및 출력을 안전하고 편리하게 살균하는 실질적인 방법은 무엇입니까
- 18. 양식/URL에서 POST/GET 변수를 살균하는 가장 좋은 방법은 무엇입니까?
- 19. regexp에서 문자열을 살균하는 방법
- 20. POST와 GET을 살균하는 이유
- 21. 입력을 스캔하는 방법은 무엇입니까?
- 22. REST/Web API에서 데이터를 살균하는 것은 무엇입니까?
- 23. 작은 MCE의 execCommand를 jquery 버전으로 사용하는 방법
- 24. ASP.NET에서 AppDomain을 나타내는 방법은 무엇입니까?
- 25. Asp.net에서 멤버십을 확장하는 방법은 무엇입니까?
- 26. asp.net에서 현지화를 설정하는 방법은 무엇입니까?
- 27. asp.net에서 xml을 만드는 방법은 무엇입니까?
- 28. ASP.NET에서 ConnectionString을 참조하는 방법은 무엇입니까?
- 29. asp.net에서 JQgrid를 구현하는 방법은 무엇입니까?
- 30. ASP.NET에서 역할을 표시하는 방법은 무엇입니까?
속성 Whitelist가 실제로 사용되지 않는 코드를 확인했다고 확신하지 않습니다. http://ajaxcontroltoolkit.codeplex.com/SourceControl/latest#Server/AjaxControlToolkit/Sanitizer/HtmlAgilityPackSanitizerProvider.cs –