1

我开发了一个博客站点。用户可以发布他们的博客。

用户可以输入javascript、c#、java等代码和html标签如强标签等...

我为了避免 xss,我想替换下面的所有危险字符,但是这个安全性?

WebForm1.aspx.cs:

 public partial class WebForm1 : System.Web.UI.Page
    {
        public string V;
        protected void Page_Load(object sender, EventArgs e)
        {
            V = HtmlEncode("Get content from DB");

        }
        public string HtmlEncode(string theString)
        {
            theString = theString.Replace(">", ">");
            theString = theString.Replace("<", "&lt;");
            theString = theString.Replace(" ", "&nbsp;");
            theString = theString.Replace(" ", "&nbsp;");
            theString = theString.Replace("\"", "&quot;");
            theString = theString.Replace("\'", "'");
            theString = theString.Replace("\n", "<br/> ");
            ..................
            ..................
            ...................
            return theString;
        }
    }

WebForm1.aspx:

   <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Test.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <%=V%>
    </div>
    </form>
</body>
</html>
4

1 回答 1

3

解决方案是让用户输入所谓的“bb-code”。

仍用于Server.HtmlEncode防止用户输入任何真实标签,但允许输入替换。

例如,如果用户输入:

 [b]test[/b]

在您的服务器端代码中,您将其替换为

 <strong>test</strong>

斜体、其他样式和颜色也是如此。这样您就可以控制允许的 HTML 的子集。使用 BB 代码是论坛和博客的标准做法。

于 2013-09-19T01:26:15.527 回答