【问题标题】:Storing links supplied by users PHP/MYSQL存储用户提供的链接 PHP/MYSQL
【发布时间】:2014-05-12 14:54:09
【问题描述】:

处理用户提供的网址的最佳或最安全的方法是什么。我正在寻找人们社交媒体网站的网址; twitter、google+、facebook、youtube 等。我希望能够获取这些 url 并将它们存储在我的数据库中,而不会对数据库或网站造成风险。

我有哪些选择?我是否过滤输入和转义/排除字符,我是否只接受部分 url?

我仍然不确定安全过滤这些链接的最佳方法,我正在考虑一个系统,将用户提供的链接与一系列可接受的格式进行比较

即。

我的 Facebook 链接是 https://www.facebook.com/lilbugga,但我也可以使用 https://www.facebook.com/532850510

这就是 2 种不同的变体,然后人们也可以尝试使用 http、https、www、无 www 等提交指向他们个人资料的链接

如何处理所有这些不同的可能格式变化,是否创建一个数组,其中存储有多种不同格式的链接,以比较用户提供的字符串?

【问题讨论】:

  • 如果有人在那里,我仍在寻求帮助,我已经编辑了我的原始问题以提供更多细节,希望它可以帮助我找到我正在寻找的答案类型。

标签: php security url user-input input-sanitization


【解决方案1】:

URL 的最大风险不是它们包含的内容(您可以像处理进入系统的任何其他数据一样对它们进行清理),而是 它们去了哪里。您的担忧应该与发送有关您的用户通过重定向导致恶意软件感染、网络钓鱼站点等。还要找到尽可能多地过滤垃圾邮件的方法 - 任何可以接受输入的暴露网页都将成为垃圾邮件发送者的保证目标,无论多么晦涩难懂,因此您需要在设计中考虑这一点。

您可能希望查看来自 Google 的 the Safe Browsing API 之类的内容(我确信存在其他替代方案),以作为在将其上线之前识别潜在问题 URL 的一种方式。

【讨论】:

  • 读起来很有趣,我认为清理 URL 会比标准用户输入更复杂,因为它们通常包含 % / _ 之类的晦涩字符? = 等并允许它们带来一些风险
  • 并非如此 - 您需要编码出任何会使您的数据库面临风险的东西(最好的方法通常是通过参数化查询,但这取决于您的平台)并且只要您的编码和解码是对称发生的,那里有什么不寻常的字符无关紧要,因为它们会在退出时被解码。
猜你喜欢
  • 1970-01-01
  • 2014-06-21
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-14
相关资源
最近更新 更多