对 example.com/username 和 Routes 的看法

Posted

技术标签:

【中文标题】对 example.com/username 和 Routes 的看法【英文标题】:Opinion on example.com/username with Routes 【发布时间】:2010-09-27 22:44:39 【问题描述】:

我正在建立一个用户拥有自己“个人资料”的网站。我正在为整洁的 URL 使用路由,我想知道以下优点/缺点是什么:

example.com/:username

或者我应该包含一个静态路由来过滤它是个人资料页面请求吗?

example.com/u/:username
example.com/something-static/:username

哪个最好?

【问题讨论】:

【参考方案1】:

如果用户可以指定他们的用户名并以一种重要的方式自定义他们的个人资料页面,那么您将面临启用欺诈/网络钓鱼攻击的风险。

例如,我可以使用“密码重置”的用户名进行注册,然后在我的个人资料页面上放置一个表单(或指向表单的链接),然后尝试通过访问来说服人们他们需要重置密码example.com/passwordreset。

然后我可以收集密码。

如果 URL 是 example.com/users/passwordreset,则警告用户更有可能变得可疑。

【讨论】:

我不能阻止任何人注册任何带有“密码”的用户名吗? (以及其他字符串,如忘记、用户名、提醒等...) 祝你好运,得到一份完整的清单。不要忘记“FAQ”和“Help”...“Passw0rd”和 Unicode 伪装...“Contraseña”和其他语言...保留字中的常见拼写错误... @ed209 - 如果你真的想按照你提到的第一种方式来做,那么你真的可以 - 但你在这里有 2 个答案表明你为什么不应该这样做。 @Oddthinging - 同意;我从来不知道这样的设计决策是事先做出的,事后看来是正确的。【参考方案2】:

我想你不会想要的

example.com/:username

因为这会对可用的用户名施加限制,以免与 url 下的其他路径发生冲突。

我会提议

profiles.example.com/:username

【讨论】:

我有我需要的所有静态路由。我也保留了一些,如果我将来真的陷入困境,我总是可以做 example.com/something-static/my-new-page? (已经保留了一些静态的东西)

以上是关于对 example.com/username 和 Routes 的看法的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 中的路由 - 自动

Azure CDN 规则引擎

如果用户输入域/用户名,我如何重定向到用户配置文件

Flask 扩展 Mail

在 NextJS 路由中的 slug 前面添加符号(例如 @)

Paramiko捕获命令输出