php - 如何确保 icalendar (.ics) 订阅的安全?

标签 php apache cakephp icalendar

我有一个多用户网站,想为每个用户发布一个单独的 icalendar 订阅文件 (.ics)。

我们的 apache 服务器配置为仅提供通过 https 的访问。

我考虑过的一种方法是,当用户第一次询问他们的订阅 URL 时,生成一个长的随 secret 钥并将其包含在 URL 中。然后该 key 的散列将存储在数据库中。示例:https://site.com/calendar/user_id/dQXeCgtiOmZ5lAXoedmujiuA47VmCgA5OIfE6vZ8BhJT3Rxh20b9Ci.ics

我们的 cakephp 应用程序中的所有页面都要求用户登录(显然期望登录页面)。我会将 ics 文件配置为也不需要用户登录,而是仅在提供正确的 key (针对哈希进行测试)时才显示。

这种方法有什么缺点吗?

我应该使用其他方法吗?

我见过有人在订阅 URL 中包含基本身份验证的示例,但这听起来更糟。示例:https://user:password@site.com/calendar/user_id

这是在学校环境中部署的,因此 iCalendar 订阅包含相当普通的内容,例如类(class)表和作业截止日期,但我仍然希望确保它的安全。

最佳答案

将不过期 secret 添加到 url 的缺点是它们可能“泄漏”到其他系统。任何读取 iCalendar 提要的东西都不会真正认为提要 url 本身非常敏感,并且这些 url 可能存储在其他应用程序可能读取的系统部分中。

iCalendar 提要可能被缓存,因此该提要的缓存副本及其 secret 可能存在于本地浏览器缓存、公司网络缓存和其他中介中。

当用户第一次点击这样的 url 时,浏览器工具栏可能会记录该请求并将其发送到外部服务。

这只是几个向量。使用基本身份验证并不糟糕,只是不要将其嵌入到 url 中并要求用户再次输入密码。

不过,我无法为您决定这是否是可以接受的风险。我们确实对某些内容使用 secret 网址。

关于php - 如何确保 icalendar (.ics) 订阅的安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23861627/

相关文章:

java - 反向配置 LDAP

CakePHP:我总是需要使用 isAuthorized() 吗?

cakephp - Cake PHP 复杂查找 'OR' 无法在 null 和空字符串下正常工作

php - 我需要在 arsort() 之后 reset() 吗?

php - 代码点火器 :- get monthy recap report

java - 严重 : Exception starting filter struts2 java. lang.ExceptionInInitializerError

php - 在mysql中选择一列值

php - 多个 WHERE 条件与一个 OR - Codeigniter

php - 如何获取文本框中的值并将值显示到模式 Bootstrap 中?

javascript - Apache 404 错误 - Drupal