代码之家  ›  专栏  ›  技术社区  ›  user229044

为了路由的目的,依赖url中的斜杠是安全的吗?

  •  5
  • user229044  · 技术社区  · 16 年前

    我正在构建一个包含产品的站点,每个产品都属于一个或多个类别,可以嵌套在父类别中。我想有搜索引擎优化友好的网址,如下所示:

    1. mysite.com/类别/
    2. mysite.com/category/product网站
    3. mysite.com/category/sub-category网站/
    4. mysite.com/category/sub-category/产品

    我的问题是:依赖一个尾随斜杠的存在来区分案例2和案例3是否安全?当检测到尾随斜杠时,我是否总是假设用户想要一个类别索引,而不是一个没有尾随斜杠的特定产品的页面?

    我不担心实现这个uri方案;我已经用php和mod_rewrite做了很多工作。我只是想知道是否有人知道有人反对这种url路由。浏览器从地址栏中剥离/添加尾随的url,或者搜索引擎对这样的站点进行爬网,是否存在任何已知的问题?有没有任何搜索引擎优化问题或其他绊脚石,我可能会遇到?

    5 回复  |  直到 12 年前
        1
  •  5
  •   DVK    16 年前

    除了您提到的其他陷阱之外,用户还可以自己更改url(通过键入产品或类别)并添加/删除后面的“/”。

    为了解决你的问题,为什么不有一个特殊的子类别” 全部的 “而不是 “mysite.com/category/product”有“mysite.com/category/ 全部的 产品?

        2
  •  5
  •   bzlm    16 年前

    对我来说,这似乎很不自然 http://product/ http://product 代表两种完全不同的资源。它很容易混淆,而且可以减少您的url hackable ,因为很难判断尾随斜杠是否应该出现。

    此外,在 RFC 3986 , 统一资源标识符(uri):通用语法 ,上有一条注释 基于协议的规范化 在第6.2.4章中,讨论了与网站的非人类访问者(如搜索引擎和网络蜘蛛)有关的这种特殊情况:

    减少假阴性发生率的实质性努力是 对蜘蛛网来说通常是经济有效的。因此,他们实施 在uri比较中更具攻击性的技术。例如, 如果他们观察到

    http://example.com/data

    重定向到仅在尾部斜杠中不同的uri

    http://example.com/data/

    他们将来很可能会把两者视为等价物。(…)

        3
  •  3
  •   Andrew B    16 年前

    区别的一种方法是确保产品页面有一个扩展名,但类别或子类别页面没有。即:

    1. mysite.com/类别/
    2. mysite.com/category/product.html网站
    3. mysite.com/category/sub-category网站/
    4. mysite.com/category/sub-category/product.html网站

    这使它明确无误。

        4
  •  1
  •   Jason M    16 年前

    不要以为用户会做任何事情,除了最坏的情况下,在任何url相关的情况下。

    除非您准备在代码中执行重定向,否则假设您有相同的机会使uri以斜线结尾或不以斜线结尾。唯一的方法是确保您的代码是健壮的,从而不必担心此类问题。

        5
  •  0
  •   Community Mohan Dere    9 年前

    这个问题假设在url后面添加一个斜杠会创建一个url,该url引用 不同的 资源。这是错误的;url的语义是它们都引用同一个资源。在 基础 仅URL changes 如何使用该基url解释相对url。

    推荐文章