作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在对我的解决方案进行 Checkmarx 扫描时遇到跨站点历史记录操作问题。
我得到的问题是:
xyz\abc.aspx.cs 第 40 行的 Page_Load 方法可能会泄漏服务器端条件值,从而使用户能够从其他网站进行跟踪。这可能构成隐私侵犯。
这是代码,我在网上收到错误消息 (*)
protected void Page_Load(object sender, EventArgs e)
{
try
{
lblErrorMsg.Text = "";
lblErrorMsg.Visible = false;
if (!IsPostBack)
{
//Code to get the content page name.
string[] strPageInfo = HttpContext.Current.Request.ServerVariables.GetValues("PATH_INFO");
string strPage = strPageInfo[0].Substring(strPageInfo[0].LastIndexOf('/') + 1, ((strPageInfo[0].Length - strPageInfo[0].LastIndexOf("/")) - 1)).ToLower();
msg.MessageText = "Verifying access";
oLogger.LogInfo(msg, "Verifying access");
//firstly, check whether the logged-in user is authorized to view the page
ManageAuthorization.CheckAccess(strPage, out BoolAccess);
if (BoolAccess)
{
msg.MessageText = "Authorized to perform operations";
oLogger.LogInfo(msg, "Authorized to perform operations");
}
else
{
////display unauthorized screen
msg.MessageText = "Unauthorized to perform operations";
oLogger.LogWarning(msg, "Unauthorized to perform operations");
RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
var byteArray = new byte[4];
var randomInteger = BitConverter.ToUInt32(byteArray, 0);
Response.Redirect(String.Format("../Default/Unauthorized.aspx?r={0}",randomInteger),true);
}
}
}
catch (Exception ex)
{
msg.MessageText = "Error while loading the page, Exception is:" + ex.Message;
oLogger.LogMessage(LogCategory.Error, msg);
}
}
我没有得到任何正确的答案,我该如何解决这个问题,请任何人帮忙。提前致谢 :)
最佳答案
Checkmarx 将此标记为漏洞,因为威胁代理可能会破坏浏览器的 SOP并可能通过事件推断泄露用户信息。
要解决此问题,您需要在重定向中添加一个随机值:
msg.MessageText = "Unauthorized to perform operations";
oLogger.LogWarning(msg, "Unauthorized to perform operations");
RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
var byteArray = new byte[4];
provider.GetBytes(byteArray);
var randomInteger = BitConverter.ToUInt32(byteArray, 0);
Response.Redirect(String.Format("../Default/Unauthorized.aspx?r={0}", randomInteger), true);
关于security - Page_load 方法可能会泄露服务器端的条件值,从而使用户能够从另一个网站进行跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64046701/
java.lang.Throwable 的哪些子类可能被空语句抛出? 通过短语“空语句”,我指的是“无”、“分号”和“分号”: // .... A(); B(); C(); try { //
我是一名优秀的程序员,十分优秀!