问题 跨站脚本:已反映已标记

雪霜80

新成员
已加入
2019年9月3日
留言内容
1
编程经验
Beginner
即使添加了AntiXss,Fortify也会在我的cs文件中标记以下代码。我可以知道该如何解决吗?

C#:
protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        lblMessage.Text = txtEmail.Text =
            System.Web.Security.AntiXss.AntiXssEncoder.HtmlEncode(string.Empty,true);
    }
}
 

跳伞

工作人员
已加入
2019年4月6日
留言内容
2,536
地点
弗吉尼亚州切萨皮克
编程经验
10+
我们大多数人没有Fortify。您能否至少告诉我们Fortify关于某些被标记项目显示的确切信息是什么?

就个人而言,我只删除3-7行,而不给Fortify任何可抱怨的地方。我的理由是:由于这不是回发,因此文本框和标签的默认状态为空字符串-除非您在使用WebForms设计器时将这些控件设置为非空。

并且如果您确实必须将它们设置为空字符串(因为您确实在WebForms设计器中设置了默认值),那么请使用2条与C#编码建议一致的单独行。尽管C#像您一样支持C ++样式堆栈,但这实际上是一种不良的编程习惯。试图节省行的C和C ++天已经一去不复返了,因为行数越多,编译器的运行速度就越慢。现代编程鼓励编写更具表达力的代码,这些代码易于理解。因此,将您的代码编写为:
C#:
protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        lblMessage.Text = string.Empty;
        txtEmail.Text = string.Empty;
    }
}
 
Last edited:
最佳 底部