我对安全性有疑问。我有一个网站使用这样的网址:
www.mysite.com/product?id=45t6yHYU431azeFgThu78n
在服务器端,我当然检查产品id = 4是否存在以及连接用户是否有权查看此产品的此页面。如果不是,则用户收到错误"未授权"。
我的问题是id = 4是我表的主键。我想知道这个主键在网址中是否清晰显示是否是个好主意。
也许那个
Set
更好?在地址栏中转换这些参数会更好吗?如果在服务器端正确管理安全性,或者没有必要?
答案 0 :(得分:0)
这取决于标识符所指的内容。您总是不得不想知道攻击者可以对此信息做些什么。在URL中泄漏不透明标识符会给攻击者任何有价值的信息吗?他/她可以使用此信息以不安全的方式检索更多信息吗?
例如,如果此标识符是医疗记录号(MRN),也用于其他系统和许多纸质表格,则在URL中使用此标识符将是HIPAA违规。
另一方面,如果此标识符指向清单表中的产品,则可以在URL片段或查询参数中使用它。
答案 1 :(得分:0)
不是在URL中使用产品ID = 4,而是使用PHP中定义的 POST 方法将产品ID发送到服务器端,而不在地址栏中显示