2010-08-23 34 views

回答

0

我认为使用查询字符串是完全正常的,但有hackable URLs的情况,因为它们对高级用户更易于理解,并且对搜索引擎友好。例如,我认为http://www.example.com/user/view/1234看起来比http://www.example.com/view.aspx?user=1234更直观。

如果您使用的是IIS 7.0,则无需将应用程序更改为使用漂亮的URL。 URL Rewrite Module和一些重写规则应该足够了。

+0

URL重写模块看起来很棒。你以前用过吗? – Morgan 2010-08-23 05:43:26

+0

是的,我已经使用了几次。它完全受到Microsoft的支持,除了必须了解正则表达式外,您无需担心使用它。 – Mhmmd 2010-08-23 05:56:48

3

查询字符串是完全正常的,如果你确定要锁定什么人的意图。你应该检查一个有效的值(数字,非空等等),如果你的应用程序有安全性,访客是否有权查看用户1245的个人资料..

您可以查看Session & ViewState,但QueryString似乎是您所追求的内容。

6

您的问题并不是真正的.NET问题......每个Web框架和Web开发人员都以某种方式处理这个问题。

大多数人都认为,对于网站主要面向用户的部分,您应该避免使用长查询字符串,而采用对网站访问者有意义的网址结构。尝试使用逻辑层次结构,当访问者阅读时,他们可以推断出他们在网站上的位置。在几个地方点击StackOverflow,看看他们用这个网址做了些什么。你通常有一个很好的主意,你在看什么,你在哪里。

其他一些问题......虽然很多数据库查询都是使用主键完成的,但在URL中提供用户友好的资源名称(而不仅仅是主键)也是一个好主意。你可以看到StackOverflow在当前地址中使用主键“3544483”进行查找,但也包括一个SEO /用户友好的url参数“are-querystrings-in-net-good-practice”。如果有人通过电子邮件将您的链接发送给您,您就会明白自己即将开放的内容。

我不太确定WebForms如何处理Url路由,但如果您正在努力掌握概念,请通过MVC NerdDinner教程。他们涵盖了一些基本的网址路由,可以帮助。

1

如果可能,我认为应该避免这种做法,特别是如果您传递纯文本自动递增ID。在我看来,你几乎戏弄用户操纵查询字符串值,看看他们是否可以访问别人的个人资料。即使采取了适当的安全措施(在呈现页面之前验证服务器端的请求),我仍然建议在这种特殊情况下加密查询字符串参数。

0

要清楚地回答你的问题:是的,这不是一个好的实践。事实上,这是一个网站的预期行为。

我完全同意ShaderOp,你应该使用url rewritter来获得一个很好的loocking url。事实上,我假设你会进行一些验证,以避免有人操纵url并访问他们不能访问的数据。

0

查询字符串正常,但不会危及他们的安全。

如果您正在访问的配置文件是当前登录的用户,则不需要发送uid。只需转到/ profile并加载当前登录的用户信息。

如果您正在查看其他会员资料,我建议只使用它的'用户名',加密的ID或Guid。

将客户ID暴露给客户通常不是一个好主意。