在我正在编写的一个web应用程序中,我让登录的访问者有机会输入一个URL,以便与他们上传的图片一起使用,作为返回到他们网站的链接。
我打算验证输入的字符串以确保它是一个URL,但在仔细考虑了解决方案的复杂性后,我认为可能没有必要这样做。
但是,如果不这样做,是否有可能会遗漏任何安全隐患?(我考虑的情况是,有效的URL可能包含一些恶意脚本或类似的脚本。)
发布于 2012-06-11 19:28:55
URL的安全问题与其有效性关系不大(尽管进行基本检查以捕获错误是很好的,而且您自然需要使用与一般数据相同的输入验证和输出转义代码);它更多地与危险的URL方案有关。
最值得注意的是,javascript: URL根本不是真正的位置,而是注入到链接它们的页面中的脚本内容,从而导致跨站点脚本漏洞。还有其他具有类似问题的计划。最好是只允许已知良好的方案,例如,通过检查字符串是否以http://或https://开头。
发布于 2012-06-10 01:59:08
这个特性似乎是一个完美的例子,在Cross-Site Request Forgery (CSRF) attack中,上传者链接到触发CSRF攻击的网页。
为了降低CSRF攻击的风险,请确保攻击站点无法预测具有站点影响的操作。这通常是通过所谓的令牌来完成的,这是一个只有您的站点和登录的访问者知道的随机值。
发布于 2012-06-10 02:06:23
正确地验证URL并非易事。您可以使用get close,但它仍然不一定涵盖RFC允许的所有内容。只要您不将URL作为输入进行评估,那么运行html_escape()或您的框架的等价物就足以保护您的站点免受随意的字符串攻击。
您可能需要研究您的框架,以了解针对跨站点脚本、SQL注入和其他相关问题需要采取哪些预防措施。大多数可能出错的事情都与未经清理的输入有关,但您的里程可能会有很大的不同。
如果你期望100%的安全,那么保护用户可能不是一个合理的设计目标。毕竟,网络并不是一个受保护的沙盒。
https://stackoverflow.com/questions/10963242
复制相似问题