如上所述,HTML中的单引号何时变得如此受欢迎?和Jquery在属性中嵌入了引用, HTML上的Wikipedia条目说明如下:
单引号字符(')在用于引用属性值时,当它出现在属性值本身内时,还必须转义为
'或'(不应转义为'XHTML文档除外).
为什么不'应该使用?另外,"安全使用而不是"?
如何在.NET中转义HTML字符?
我从json字符串中抓取html并在标题中得到"more text.看起来我需要做两次"才能成为"一个'''.
如何在.NET中转义所有文本html转义码?
可能重复:
<XMP>标记
我知道它当然已被弃用了,我知道如何通过使用<pre>标签,<code>标签和转义来解决它<>.
我的问题是,为什么要将其贬值?在<xmp>标签中使用真实代码的解决方案似乎比我们现在所做的所有这些逃避更加优雅,然而,一个被忽略而偏向于另一个.
任何的想法?是否有理由支持<pre>; 逃脱<xmp>?
我想知道是否有任何类型的C#类或第三方库删除脚本标签等危险字符?
我知道你可以使用正则表达式,但我也知道人们可以编写脚本标签的方法很多,你可以欺骗正则表达式认为它没问题.
我还听说HTML Agility Pack很好,所以我想知道是否有为它制作的脚本删除课程?
编辑
http://htmlagilitypack.codeplex.com/Thread/View.aspx?ThreadId=24346
我在他们的表格上找到了这个.但是我不确定这是否是完整的解决方案,因为这个家伙没有任何测试支持它,如果这是在一些网站,每天使用这个脚本的大量人来测试看看是否有任何东西会更好通过.
好的例子(差不多),谢谢!但是,有一些方法可以让我看到它变得更强大:
1)在查找带有"javascript:","vbscript:","jscript:"的链接时使用不区分大小写的搜索.例如,原始示例不会删除HTML:
Run Code Online (Sandbox Code Playgroud)<a href="JAVAscRipt:alert('hi')">click> me</a>2)删除包含表达式规则的所有样式属性.Internet Explorer将CSS规则表达为脚本.例如,以下内容将生成一个消息框:
Run Code Online (Sandbox Code Playgroud)<div style="width:expression(alert('hi'));">bad> code</div>3)同时删除标签
老实说,我不知道为什么"表达"还没有从IE中删除 - 我认为这是一个重大缺陷.(尝试在Internet Explorer中的div示例,你会明白为什么 - 甚至IE8.)我只是希望有一种更简单/标准的方法来清理用户的html输入.
这是使用这些改进更新的代码.如果您发现任何错误,请告诉我:
public string ScrubHTML(string html)
{
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
//Remove potentially harmful elements
HtmlNodeCollection nc = doc.DocumentNode.SelectNodes("//script|//link|//iframe|//frameset|//frame|//applet|//object|//embed");
if (nc != null)
{
foreach (HtmlNode node in nc)
{
node.ParentNode.RemoveChild(node, false);
}
}
//remove hrefs to java/j/vbscript URLs
nc = doc.DocumentNode.SelectNodes("//a[starts-with(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'javascript')]|//a[starts-with(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'jscript')]|//a[starts-with(translate(@href, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'vbscript')]");
if …Run Code Online (Sandbox Code Playgroud) 我正在使用cluetip插件,简单的用例是将内容放在title属性中,如下所示:
<a title='Top title|detail content'>Text</a>
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是"详细内容"里面的字符串里面有一个撇号,它似乎混淆了cluetip插件.无论如何都要逃避或编码撇号以使cluetip正常工作.
所以,我以为我是一个"资深的"ASP.NET WebForms开发人员; 但是,我最近遇到了这个问题并且(令人不快地)惊讶于输出没有被转义:
<asp:Label Text='<%# Eval("UserData") %>' runat="server" />
Run Code Online (Sandbox Code Playgroud)
Eval返回的映像"<h1>joke is on you"或对页面的正确呈现/安全性更恶意的映像.
有一个Label而不是<%# %>直接的原因是,正如错误推测的那样,"UserData"的内容将被正确地转义为HTML.但是,显然并非如此,上述方案导致在<h1>HTML标记中创建元素.
然后问题可以提炼为:
给定任意用户输入,即将其显示为"纯文本",将数据插入页面(跨度)并正确转义的简单/可靠/安全方法是什么?
如上所述,它应该在数据绑定控件的上下文中运行.我知道HttpUtility.HtmlEncode,但我想接受仍然使用控件的想法 - 也许我错过了这个任务的标准控件 - 安全地表示这种情况,而不需要包装Eval.如果这是误导的,基于逻辑或经验,最好包括在回复中.我不会拒绝在这种情况下我使用Label完全不合适的观点.
不幸的是,由于需要在SharePoint 2010上下文中运行,我的目标是ASP.NET for .NET 3.5,而不是 ASP.NET 4.
我有一个处理文档内容的VB.NET程序.该程序将大量文档处理为"批处理"(> 2Million文档;总共1TB卷)这些文档中的一些可能包含控制字符或字符,如f0e8(http://www.fileformat.info/info/unicode/char/f0e8 /browsertest.htm).
是否有一种简单而特别快速的方法来删除这些字符?(空格,换行符,标签除外......)如果答案是正则表达式:有没有人为我提供完整的正则表达式?
谢谢!
我有一个特殊字符的字符串,如下所示:
äöüß&
现在我想把它放在一个HTML文档中,需要转义这些字符.这样做有一种优雅的方式吗?
我能做到这一点:
string html;
html = html.Replace("ü", "uu¨");
html = html.Replace("ß", "ß");
....
Run Code Online (Sandbox Code Playgroud)
但我不想为所有可能的特殊角色做到这一点.
我有一些xml,其中一些元素值是unicode字符.是否可以用ANSI编码表示?
例如
<?xml version="1.0" encoding="utf-8"?>
<xml>
<value>?</value>
</xml>
Run Code Online (Sandbox Code Playgroud)
至
<?xml version="1.0" encoding="Windows-1252"?>
<xml>
<value>殘</value>
</xml>
Run Code Online (Sandbox Code Playgroud)
我反序列化XML,然后尝试使用指定默认编码的XmlTextWriter序列化它(默认为Windows-1252).所有unicode字符最终都是问号.我正在使用VS 2008,C#3.5