我正在开发一个具有数据库后端的Web应用程序。在过去,我完成了以下内容: http://page.com/view.aspx?userid=123查看用户123的个人资料;使用查询字符串。在.NET良好实践中Querystrings?
使用查询字符串是否被认为是很好的做法?还有什么我应该做的?
我使用C#4.0和ASP.net。
我正在开发一个具有数据库后端的Web应用程序。在过去,我完成了以下内容: http://page.com/view.aspx?userid=123查看用户123的个人资料;使用查询字符串。在.NET良好实践中Querystrings?
使用查询字符串是否被认为是很好的做法?还有什么我应该做的?
我使用C#4.0和ASP.net。
我认为使用查询字符串是完全正常的,但有hackable URLs的情况,因为它们对高级用户更易于理解,并且对搜索引擎友好。例如,我认为http://www.example.com/user/view/1234
看起来比http://www.example.com/view.aspx?user=1234
更直观。
如果您使用的是IIS 7.0,则无需将应用程序更改为使用漂亮的URL。 URL Rewrite Module和一些重写规则应该足够了。
查询字符串是完全正常的,如果你确定要锁定什么人的意图。你应该检查一个有效的值(数字,非空等等),如果你的应用程序有安全性,访客是否有权查看用户1245的个人资料..
您可以查看Session & ViewState,但QueryString似乎是您所追求的内容。
您的问题并不是真正的.NET问题......每个Web框架和Web开发人员都以某种方式处理这个问题。
大多数人都认为,对于网站主要面向用户的部分,您应该避免使用长查询字符串,而采用对网站访问者有意义的网址结构。尝试使用逻辑层次结构,当访问者阅读时,他们可以推断出他们在网站上的位置。在几个地方点击StackOverflow,看看他们用这个网址做了些什么。你通常有一个很好的主意,你在看什么,你在哪里。
其他一些问题......虽然很多数据库查询都是使用主键完成的,但在URL中提供用户友好的资源名称(而不仅仅是主键)也是一个好主意。你可以看到StackOverflow在当前地址中使用主键“3544483”进行查找,但也包括一个SEO /用户友好的url参数“are-querystrings-in-net-good-practice”。如果有人通过电子邮件将您的链接发送给您,您就会明白自己即将开放的内容。
我不太确定WebForms如何处理Url路由,但如果您正在努力掌握概念,请通过MVC NerdDinner教程。他们涵盖了一些基本的网址路由,可以帮助。
如果可能,我认为应该避免这种做法,特别是如果您传递纯文本自动递增ID。在我看来,你几乎戏弄用户操纵查询字符串值,看看他们是否可以访问别人的个人资料。即使采取了适当的安全措施(在呈现页面之前验证服务器端的请求),我仍然建议在这种特殊情况下加密查询字符串参数。
要清楚地回答你的问题:是的,这不是一个好的实践。事实上,这是一个网站的预期行为。
我完全同意ShaderOp,你应该使用url rewritter来获得一个很好的loocking url。事实上,我假设你会进行一些验证,以避免有人操纵url并访问他们不能访问的数据。
查询字符串正常,但不会危及他们的安全。
如果您正在访问的配置文件是当前登录的用户,则不需要发送uid。只需转到/ profile并加载当前登录的用户信息。
如果您正在查看其他会员资料,我建议只使用它的'用户名',加密的ID或Guid。
将客户ID暴露给客户通常不是一个好主意。
URL重写模块看起来很棒。你以前用过吗? – Morgan 2010-08-23 05:43:26
是的,我已经使用了几次。它完全受到Microsoft的支持,除了必须了解正则表达式外,您无需担心使用它。 – Mhmmd 2010-08-23 05:56:48