Sim*_*eon 6 java database url obfuscation web
在URL中公开DB内部ID是不好的做法吗?
例如,假设我有一个users表,每行有一些ID(主键).暴露URL myapp.com/accountInfo.html?userId=5,在哪里5是一个真正的主键,被视为"坏事",为什么?
还假设我们正确防御SQL注入.
我最感兴趣的是与Java Web技术堆栈相关的答案(因此是java标签),但一般的答案也会非常有用.
谢谢.
这取决于您解析URL的方式.如果允许盲目的SQL注入是不好的.您只需要从用户输入验证id.
Stackexchange还会将行的id放入URL中,如地址栏中所示.诀窍是解析部分并获得所有可能的SQL.简单的方法是检查id是否为数字.
在URL中传递并不是坏事,因为它对最终用户没有多大意义 - 如果您在运行应用程序时依赖该值,那么这只会是一个坏处.例如,您不希望用户注意到userId = 5并将其更改为userID = 10以显示另一个人的帐户.
将此信息存储在服务器上的会话中会更安全.例如,当用户登录时,其userID值存储在服务器上的会话中,并且每当查询数据库时都使用此值.如果你这样做,通常不需要通过URL中的userID,但是它不会受到伤害,因为它不会被你的DB查询代码使用.
| 归档时间: |
|
| 查看次数: |
2308 次 |
| 最近记录: |