【问题标题】:Is there a ASP.NET method for escaping characters?是否有用于转义字符的 ASP.NET 方法?
【发布时间】:2012-10-31 16:21:09
【问题描述】:

我在我的 ASP.NET Web 表单中创建了一个文本区域,当输入 HTML 标记时,它会产生以下错误:

 Server Error in '/GreetingCardMaker' Application.
 --------------------------------------------------------------------------------

A potentially dangerous Request.Form value was detected from the client (setGreeting="<br />"). 

.net 类库中是否有可以调用字符串来删除 HTML 的方法?或者,是否有一种我可以编写来调用字符串的方法?

【问题讨论】:

  • 请详细描述您的问题。
  • 什么服务器错误?你把这个放在哪里?有多种形式的转义取决于你想用什么......
  • “这些字符”有点太模糊了。
  • 哪些字符会出错?
  • HttpUtility.HtmlEncode,但是,它不会阻止您出现 server 错误,而是阻止 HTML 无效。

标签: c# asp.net escaping html-escape-characters


【解决方案1】:

HttpServerUtility.UrlEncode() - 来自 System.Web.dll。

对您输入的任何数据执行 URL 编码(因为从请求中提取不会转义原始值)

另外还有Uri.EscapeUriString(),它做的事情非常相似。

【讨论】:

    【解决方案2】:
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="page.aspx.cs" validateRequest="false" Inherits="Project.UI.page" %>
    

    在您的 aspx 页面中添加 validateRequest = "false"。这将禁用所选页面的输入验证。

    【讨论】:

      【解决方案3】:

      当 ASP.net 的 "Request Validation" 过分热衷于阻止某些类型的内容注入(尤其是 HTML/XSS)时,通常会发生这种情况。

      最直接的“修复”是禁用对这些内容的检查,但直到现在您还没有受到恶意输入的影响。如果您禁用请求验证,您必须准备好自己处理潜在的危险输入。我没有在此处包含禁用此功能的步骤,因为您应该在禁用它之前真正知道自己在做什么。

      上面的链接是一个好的开始,但它不应该是您阅读该主题的唯一内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多