111*_*110 1 database sql-server asp.net database-design asp.net-membership
我在应用程序中使用asp成员身份
我添加了UserProfile表,它具有Users(asp成员资格)的外键.
作为我使用的外键,Username因为用户名是电子邮件,它是唯一的.
在我需要引用用户的任何地方我都Username用作外键.
从应用程序,当我需要获取配置文件,例如我传递Username给存储过程来获取数据.
我只是想知道这是否是这样做的好方法.这里有一些潜在的安全问题吗?
我在这里看到的主要问题是你为外键花费了大量的"数据空间",这将使它变慢并占用你的表的数据库空间.此外,您的数据库表将连接进行字符串比较 - 数据库注意并为此字符串制作哈希值,后面是进行数字比较,但是有一点点开销.
只需使UserName唯一,并使用数字外键将其与其余表连接.
这里的第二个问题是用户需要更改他们的电子邮件,或出于任何原因给出错误.在这种情况下,您需要更新数据库上的所有连接,并确保没有其他类似的电子邮件.
还有一个问题是电子邮件和外键可能区分大小写.如果由于任何原因你使它区分大小写,那么你就搞得一团糟.
关于安全问题,您始终需要使用参数打开并询问您的数据库.对于数字键或字符串键,这是相同的,因此在这种情况下这没有区别.
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |