我正在编写一个网络应用程序,我接受图像源作为 url 查询参数。我想验证图像源以确保用户/调用者没有发送可能导致 XSS 或类似情况的请求。您能否建议我一种验证图像 src 或正则表达式的好方法,它可以确保没有恶意内容被推送到我的服务器并可能影响最终用户。
我可以想到以下格式的图像源:
- http://foo.com/bar.jpg(绝对)
- /foo/bar.jpg(相对)
- foo/bar.jpg(相对)
谢谢,高拉夫
我正在编写一个网络应用程序,我接受图像源作为 url 查询参数。我想验证图像源以确保用户/调用者没有发送可能导致 XSS 或类似情况的请求。您能否建议我一种验证图像 src 或正则表达式的好方法,它可以确保没有恶意内容被推送到我的服务器并可能影响最终用户。
我可以想到以下格式的图像源:
谢谢,高拉夫
正则表达式可能不是您想要的。由于您使用的是 Java,请使用URI
:
final URI input;
try {
input = URI.create(inputStringHere);
} catch (IllegalArgumentException e) {
// Not even a valid URI: deal with it
}
// do other tests on input
此解决方案假定您将 url 作为参数,然后从该 url 服务器端检索数据。
单独的正则表达式不是要走的路,因为它只检查文件名,并不会告诉您实际数据是否是恶意的。我会分三个步骤来做到这一点:
/\.(jpe?g|gif|png)$/
file -I -
.即使这样也不能绝对保证安全,但它应该清除最明显的攻击媒介。