Python 如何在GET请求之前清理用户提供的URL?

Python 如何在GET请求之前清理用户提供的URL?,python,security,request,Python,Security,Request,我正在写一个电报机器人,当网页发生变化时通知我。我提供了一个URL,它通过请求定期获取。获取并散列。如果散列与前一个不同,则会通知我 我愿意向社区的其他人开放它,但我需要防止恶意使用和滥用。到目前为止,我对用户提供指向巨大文件的链接持谨慎态度,但鉴于我对这一主题了解甚少,我怀疑还有更多的内容。 我的问题是: 我会受到什么样的攻击 我如何辩护 使用用户输入URL参数,还可以公开内部网络。例如,如果您的数据库在端口5000上运行,则攻击者会将URL输入为。类似地,如果您使用的是云网络EC2实例,那么

我正在写一个电报机器人,当网页发生变化时通知我。我提供了一个URL,它通过
请求定期获取。获取
并散列。如果散列与前一个不同,则会通知我

我愿意向社区的其他人开放它,但我需要防止恶意使用和滥用。到目前为止,我对用户提供指向巨大文件的链接持谨慎态度,但鉴于我对这一主题了解甚少,我怀疑还有更多的内容。 我的问题是:

  • 我会受到什么样的攻击
  • 我如何辩护

  • 使用用户输入URL参数,还可以公开内部网络。例如,如果您的数据库在端口5000上运行,则攻击者会将URL输入为。类似地,如果您使用的是云网络EC2实例,那么根据应用程序的输出,我可以尝试
    http://169.254.169.254/latest/meta-data/latest/meta-data/iam/security-credentials/
    根据应用程序输出到URL的内容过滤凭据,或尝试192.168.0.0/16扫描您的内部网络。这只是一种攻击场景。感谢您提供的示例。用户从未获得任何输出,代码只是获取和散列,仅此而已。限制这些情况的方法可能包括以具有有限权限的不同用户的身份运行bot,或者使用黑名单检查请求的URL。听起来怎么样?是的,确保只允许http和https协议,不允许ftp、ssh等。您可以参考此文档,它符合您的场景。我对直接使用请求有点怀疑。getI没有义务直接使用
    请求。get
    。如果你知道一个更好的方法,我洗耳恭听。sockets可能,但不确定。通过用户输入URL参数,你也可以公开你的内部网络。例如,如果您的数据库在端口5000上运行,则攻击者会将URL输入为。类似地,如果您使用的是云网络EC2实例,那么根据应用程序的输出,我可以尝试
    http://169.254.169.254/latest/meta-data/latest/meta-data/iam/security-credentials/
    根据应用程序输出到URL的内容过滤凭据,或尝试192.168.0.0/16扫描您的内部网络。这只是一种攻击场景。感谢您提供的示例。用户从未获得任何输出,代码只是获取和散列,仅此而已。限制这些情况的方法可能包括以具有有限权限的不同用户的身份运行bot,或者使用黑名单检查请求的URL。听起来怎么样?是的,确保只允许http和https协议,不允许ftp、ssh等。您可以参考此文档,它符合您的场景。我对直接使用请求有点怀疑。getI没有义务直接使用
    请求。get
    。如果你知道一个更好的方法,我洗耳恭听。也许吧,不过我不确定。。