我正在构建一个网页,其特色非常类似于 facebook 墙/新闻源。注册用户(或通过 Facebook-connect、google auth)可以提交 url。目前,我正在获取这些 URL 并使用 urllib2 来获取 URL 的内容并搜索相关信息,例如 og:properties、HTML title-tag 和 perheps some -tags for images。
现在,我明白当我让用户向我的服务器提供要打开的 URL 时,我会让我的服务器面临风险。
我的问题是风险有多高?我可以进行哪些标准安全检查?
至于现在,我只是在没有任何“主动”保护的情况下打开 url,因为我不知道要检查什么。
以及如何将获取的内容存储到数据库中。 Django 是否内置了针对 SQL 注入(inject)的保护?
谢谢!
最佳答案
其中一个明显的风险是有人可能会将您的网站用作传播恶意 URL 的载体。
例如假设我发现了一个格式错误的 html,它允许在基于 webkit 的浏览器中执行任意代码,比如利用某个 0-day 缓冲区溢出。假设您的网站很受欢迎,那将是我肯定会尝试的网站之一。
现在,您不可能匹配提交的 URL 的内容来查找安全漏洞。那时您将成为一家反病毒/安全公司。 Chrome 和 Safari 都在一定程度上解决了这些问题。
为了用户/内容的缘故以及我解释的风险,您可以构建一个通过用户操作学习的标记系统。您可以在有人标记 URL 时训练分类器,请参阅 examples在这里。
我敢肯定有很多这样的解决方案,在 python 中也是如此。
要快速了解安全性,Django 上下文中的 sql 注入(inject),checkout this link .
关于python - Python/django 中的 URL 获取 : prevent abuse, mailcious urls 等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12815448/