我有一个多用户网站,并希望为每个用户发布一个单独的icalendar订阅文件(.ics)。
我们的apache服务器被配置为只能通过https提供访问。
我考虑过的一种方法是,当用户第一次请求他们的订阅URL时,生成一个长的随机密钥并将其包含在URL中。然后,该键的散列将存储在数据库中。示例:id/dQXeCgtiOmZ5lAXoedmujiuA47VmCgA5OIfE6vZ8BhJT3Rxh20b9Ci.ics
我们cakephp应用程序中的所有页面都要求用户登录(显然期望登录页面)。我会将ics文件配置为也不要求用户登录,而是只在提供正确的密钥(根据哈希进行测试)时显示。
这种方法有什么缺点吗?
有什么不同的方法我应该使用吗?
我见过一些人的例子,包括订阅URL中的基本身份验证,但这听起来更糟。示例:id
这是在学校环境中部署的,所以iCalendar订阅包含了相当普通的内容,比如课堂时间表和作业截止日期,但我仍然希望它是安全的。
发布于 2014-05-26 02:53:39
在urls中添加未过期的秘密的缺点是它们可能会“泄漏”到其他系统。读取iCalendar提要的任何内容都不会真正认为提要url本身非常敏感,并且这些url可能存储在系统的其他应用程序可能读取的部分中。
iCalendar提要可能被缓存,因此该提要的缓存副本+它们的秘密可能存在于本地浏览器缓存、企业网络缓存和其他中介中。
当用户第一次单击类似的url时,浏览器工具栏可以记录请求并将其发送到外部服务。
只是几个向量而已。使用basic auth并不糟糕,只是不要将其嵌入url中,并要求用户再次键入他们的密码。
但我不能为你决定这是否是一个可以接受的风险。我们确实用秘密网址来做一些事情。
发布于 2022-07-15 14:01:02
我有一个类似的问题,我采取了“秘密在url”的解决方案。它并不是真正的安全,但至少它通过简单地交换url中的用户id来阻止人们猜测其他iCalendar提要。)。
我不知道如何真正保护.ics提要。我还没有遇到一个日历客户端,它允许我为ics订阅输入密码。
https://stackoverflow.com/questions/23861627
复制相似问题