【发布时间】:2017-02-11 22:03:00
【问题描述】:
我有一个简单的页面,该页面应该根据在查询字符串中发送的路径显示图像。添加查询字符串后,我收到 404 错误代码。
www.domain.com/ViewImage.aspx?Image=/img/image.jpg
ViewImage.aspx
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td align="center" valign="baseline">
<img alt="image" id="Img2" runat="server" class="fullimage" src="" />
</td>
</tr>
</table>
</form>
</body>
</html>
ViewImage.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
var src = Server.UrlDecode(this.Request.QueryString["Image"]);
this.Img2.Src = validInput(src);
}
protected string validInput(string input)
{
var regex = "[\'<>\"]";
if (null != input && !input.Contains("\"") && input.StartsWith("/"))
{
return !Regex.IsMatch(input, regex) ? AntiXssEncoder.XmlAttributeEncode(input):string.Empty;
}
return string.Empty;
}
预期结果
<img alt="image" id="Img2" runat="server" class="fullimage" src="/img/image.jpg" />
当前结果 error 404
这是我尝试并检查的:
验证页面存在
www.domain.com/ViewImage.aspx 工作正常,没有设置 src 图像,但可以正确找到页面。
验证图片存在
www.domain.com/img/image.jpg 工作正常,img 显示正确。
尝试了错误的路径
www.domain.com/ViewImage.aspx?Image=/asdasdas/asdas.jpg 我没有收到 404 错误,并且 Image src 设置正确
只尝试了文件夹,url 中没有图片
www.domain.com/ViewImage.aspx?Image=/img,这不会出现 404 错误,但如果添加最后一个斜杠,我也会收到 404 错误。
www.domain.com/ViewImage.aspx?Image=/img/
最后一个 url 出现 404 错误。
注意事项:
- 我们在服务器中使用 SSL (https),不确定这是否重要。
- 我认为该错误可能/应该在 IIS 配置中修复,但不确定是什么或如何修复。
有什么建议吗?
【问题讨论】:
-
你是
UrlDecoding你还没有UrlEncoded -
你能试试这个吗:
www.domain.com/ViewImage.aspx?Image=%2Fimg%2Fimage.jpg -
嗨@sachin,感谢您的回答。我刚试过,这也是 Jacob 的建议,但不起作用。
-
您的 IIS 配置或
web.config中可能存在异常情况;这些细节可能会有所帮助。