这是我在这里发表的第一篇文章:
扫描报告中有2个问题。请帮我解决这个问题:
Xss攻击:protected void gvMSMQ_RowDataBound(object sender, GridViewRowEventArgs e)**
信息泄漏:lblError.Text = "RowBound - " + errorMessage + "......" + ex.Message
感谢您的帮助。
protected void gvMSMQ_RowDataBound(object sender, GridViewRowEventArgs e)
{
string Path = string.Empty;
string errorMessage = "";
try
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
Image img = (Image)e.Row.Cells[0].FindControl("img1");
Literal ltrl = (Literal)e.Row.FindControl("lit1");
ltrl.Text = ltrl.Text.Replace("trCollapseGrid", "trCollapseGrid" + e.Row.RowIndex.ToString());
string str = "trCollapseGrid" + e.Row.RowIndex.ToString();
e.Row.Cells[0].Attributes.Add("OnClick", "OpenTable('" + str + "','" + img.ClientID + "')");
e.Row.Cells[0].RowSpan = 1;
errorMessage = "Two";
//Path = lstMSMQ[e.Row.RowIndex].Path;
UCEnvironmentViewerQueueGrid ucQueueGrids = (UCEnvironmentViewerQueueGrid)e.Row.FindControl("ucQueueGrids");
Classes.MSMQprofile msmqObj = new Classes.MSMQprofile();
var rowItems = e.Row.DataItem;
msmqObj = rowItems as Classes.MSMQprofile;
ucQueueGrids.lstNormalMSMQ = msmqObj.NormalQueueList;
//ucQueueGrids.lstJournalQueue = msmqObj.JournalQueueList;
ucQueueGrids.BindControl();
}
}
catch (Exception ex)
{
//error on this line!
lblError.Text = "RowBound - " + errorMessage + "......" + ex.Message;
}
}
答案 0 :(得分:2)
跨站点脚本(XSS)是一种注入漏洞。此漏洞允许恶意用户通过未经验证的输入插入自己的代码(Javascript,HTML等)。有关XSS的更多信息,请访问:OWASP Guide to XSS
扫描仪可能会根据此行发出警告:
e.Row.Cells[0].Attributes.Add("OnClick", "OpenTable('" + str + "','" + img.ClientID + "')");
使用这行代码,您可以向HTML元素添加onclick
属性,然后将调用添加到OpenTable()
,并将str
作为参数的一部分传递。 str
的值来自e
中的protected void gvMSMQ_RowDataBound(object sender, GridViewRowEventArgs e)
,这可能是恶意输入。由于e
在使用之前未经过清理,因此恶意用户可以使用e
参数在onclick
属性值中插入恶意代码。
第二个问题是信息泄漏。安全性最佳实践是清理错误消息,以尽可能少的信息为潜在的攻击者提供信息。错误消息可以揭示所使用技术的详细信息或系统的工作方式。此信息可用于有针对性的攻击。</ p>
问题可能来自以下代码行:
lblError.Text = "RowBound - " + errorMessage + "......" + ex.Message;
当您打印ex.Message
时,您可能会暴露可能在攻击中使用的错误详细信息。更好的错误消息表明发生了问题,但没有透露具体细节。有关指导,请参阅OWASP's guide to Error Handling, Auditing, and Logging。