|
|
1
24
你所做的基本上是混淆。可逆加密(base64实际上不算加密)主键仍然是主键。 你所阅读的内容可以归结为:你通常不希望你的主键在系统之外有任何意义。这就是所谓的 技术主键 而不是 自然主键 自然主键 ). 通常地 与自然主键相比更受欢迎,因为看起来不变的东西会发生变化,这可能会导致问题。甚至国家也可以存在和消失。 如果您确实拥有技术主键,那么您不希望通过赋予它们本来没有的含义而使它们成为事实上的自然主键。我认为在URL中放置主键是可以的,但安全性是一个单独的主题。如果有人可以更改该URL并访问他们不应该访问的内容,那么这是一个安全问题,需要通过身份验证和授权来处理。 有些人会争辩说,用户永远不应该看到它们。我觉得你没必要走那么远。 |
|
|
2
8
关于暴露主键的危险,您需要阅读“ autoincrement considered harmful “,作者:约书亚·沙赫特。
|
|
|
3
4
如果您担心有人更改URL以尝试查看其他值,那么您可能需要查看令牌生成。 例如,不是给用户一个“SearchID”值,而是给他们一个SearchToken,这是一个长的、唯一的psuedo随机值(Read:GUID),然后在内部映射到SearchID。 当然,您还需要应用会话安全性和soforth,因为即使是具有非顺序ID的唯一URL也无法防止服务器和用户之间的任何嗅探。 |
|
|
4
2
|
|
5
2
PostgreSQL为该问题提供了多种解决方案,可适用于其他RDBMs:
|
|
|
6
1
|
|
|
7
1
出于您的目的(构建搜索引擎),加密数据库主键的安全性折衷好处可以忽略不计。Base64编码不是加密——它通过隐蔽性实现了安全性,甚至不会对攻击者造成威胁。 |
|
|
8
1
当您在URL中看到base64时,您几乎可以肯定该站点的开发人员不知道他们在做什么,并且该站点易受攻击。 |
|
|
9
0
错,错,错。 首先,必须验证每个请求,不管它是以带有id的HTTP GET、POST或web服务调用的形式出现。 第二,一个制作得当的网站需要防范依赖于IP地址跟踪和请求频率分析的僵尸程序;隐藏ID可能会阻止某些人编写shell脚本来获取一系列对象,但也有其他方法可以通过使用某种暴力攻击来利用网站。 第三,ICQ ID很有价值,但这仅仅是因为它们与用户相关,是用户的主要身份识别手段;这是一种独一无二的用户身份验证方法,不被任何其他服务、程序或网站使用。 总之。。是的,您需要担心刮刀、DDOS攻击、数据保护和一大堆其他问题,但隐藏ID并不能正确解决所有这些问题。 |
|
|
10
0
|