首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将输入的字符串验证为URLs是否值得为了安全性而这么做?

将输入的字符串验证为URLs是否值得为了安全性而这么做?
EN

Stack Overflow用户
提问于 2012-06-10 01:53:24
回答 3查看 691关注 0票数 0

在我正在编写的一个web应用程序中,我让登录的访问者有机会输入一个URL,以便与他们上传的图片一起使用,作为返回到他们网站的链接。

我打算验证输入的字符串以确保它是一个URL,但在仔细考虑了解决方案的复杂性后,我认为可能没有必要这样做。

但是,如果不这样做,是否有可能会遗漏任何安全隐患?(我考虑的情况是,有效的URL可能包含一些恶意脚本或类似的脚本。)

EN

回答 3

Stack Overflow用户

发布于 2012-06-11 19:28:55

URL的安全问题与其有效性关系不大(尽管进行基本检查以捕获错误是很好的,而且您自然需要使用与一般数据相同的输入验证和输出转义代码);它更多地与危险的URL方案有关。

最值得注意的是,javascript: URL根本不是真正的位置,而是注入到链接它们的页面中的脚本内容,从而导致跨站点脚本漏洞。还有其他具有类似问题的计划。最好是只允许已知良好的方案,例如,通过检查字符串是否以http://https://开头。

票数 2
EN

Stack Overflow用户

发布于 2012-06-10 01:59:08

这个特性似乎是一个完美的例子,在Cross-Site Request Forgery (CSRF) attack中,上传者链接到触发CSRF攻击的网页。

为了降低CSRF攻击的风险,请确保攻击站点无法预测具有站点影响的操作。这通常是通过所谓的令牌来完成的,这是一个只有您的站点和登录的访问者知道的随机值。

票数 0
EN

Stack Overflow用户

发布于 2012-06-10 02:06:23

正确地验证URL并非易事。您可以使用get close,但它仍然不一定涵盖RFC允许的所有内容。只要您不将URL作为输入进行评估,那么运行html_escape()或您的框架的等价物就足以保护您的站点免受随意的字符串攻击。

您可能需要研究您的框架,以了解针对跨站点脚本、SQL注入和其他相关问题需要采取哪些预防措施。大多数可能出错的事情都与未经清理的输入有关,但您的里程可能会有很大的不同。

如果你期望100%的安全,那么保护用户可能不是一个合理的设计目标。毕竟,网络并不是一个受保护的沙盒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10963242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档