例如: http://stackoverflow.com/questions/396164/exposing-database-ids-security-riskhttp://stackoverflow.com/questions/396164/blah-blah 负载的同样的问题。

(我猜这是DB id的问题表?是这样的标准ASP.NET?)

有哪些优点和缺点使用这种类型的方案,在你的网页应用程序?

有帮助吗?

解决方案

嗯,首先,简单的id通常是顺序的,所以很容易猜到并从你的应用程序中检索其他数据。

在运行时加载JSON而不是通过AJAX动态加载 https://stackoverflow.com/questions/395858/doesnt-matter-what-I-型此处

现在,已经说过,这也可能被视为奖励,因为没有人在他们正确的头脑中会使他们的整体安全性取决于你必须在链接上碰到你的安全数据,因此数据的易发现性可能很好。

然而,有一点是你在某些时候会重新索引你的数据库,如果没有其他原因搜索引擎仍然会有旧的链接,那么使旧的url无效将会很糟糕。

此外,在这里使用像这样的链接到其他问题是很正常的,所以如果他们在某些时候想要重新索引并因此重新编号(或移动到guid),他们仍然必须保持旧的结构和的ID。

现在,这可能会发生或需要吗?可能没有。

我不会太担心它,只需构建您的安全性,就好像应用程序的每个入口点都已知并且应该没有问题。

其他提示

  1. 数据库ID用于在数据库中查找问题。它的数字意味着:快。如果你把它留下来,你必须查找比较慢的标题。

  2. 问题本身是使其“搜索引擎友好”的网址的一部分。它会被g ** gle等排名更高。

专业:

  • 超级易于检索网页的信息。采取的ID,呼叫的数据库,维奥拉.你的表中将(应)被编入索引,使这一查找超级快。
  • 唯一的网址。

Con:

  • Id在你的系统正在公开展示。不是一个问题在公众可用的系统,像这样。然而,适当的安全措施在后端可以使这不是一个问题,即使在敏感的系统。
  • 丑陋的网址。6+位数字的号码都是很难记住,并使得更难以区分的网页,如果人数是所有的标识。这也可以有SEO后果,因为网址有更多的相关性和结构良好的信息一般都排得更好。所以补偿提供该员额的名称在该网址。虽然我仍然不能说出一个特定后来我兄弟吃午餐,我仍然可以找到更易于浏览器的历史。
  • 慢查找。做文搜索数据库是一般比较慢。

但请记住,在这样的社区中,同时发布相同问题名称的机会更高(尽管仍然很小),这会破坏事物,因此需要应用某种独特的识别,ID可能是在这个特定的Web应用程序开发的上下文中非常符合逻辑。

我不认为在ASP.NET和其他框架中执行它是不好的做法,并且相当普遍。正如@lassevk所说,如果您的安全性依赖于它,那么您需要更多的检查(用户X可以记录Y),但更多的是归结为公共站点的URL友好性。

例如,SO的网址相当友好:

  

使用数据库ID的优点和缺点URL?

google在网址的START位置比最后的费率信息,所以看起来像:

  

https://stackoverflow.com/pros / q / 407120 使用-DB-ID-内式URL -and-禁忌的-

应该在“中使用db id的优点和利弊获得更高的排名。这不是唯一的因素,但它是一个非常重要的因素 - 看看亚马逊的格式,他们这样做有很好的理由:

  

http://www.amazon.com/Maverick-Ricardo-Semler/dp / 0712678867

     

http:// server / book-name / dp / book-id

Wordpress这样做:

  

http:// server / yyyy / mm / dd / name-of -the-帖子

但是,如果您在同一天发布两个名为“foo”的帖子,则会得到:

  

http:// server / yyyy / mm / dd / foo

     

http:// server / yyyy / mm / dd / foo2

slug(foo / foo2)不是PK,但它在posts表中保持唯一。

我认为将ID放在URL中不是问题,除非您的URL是GUID!方式太长,难以打字。如果它是一个int或某种短的guid(例如6-8个字符),那么它应该不是问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top