网站和数据库视图

Posted

技术标签:

【中文标题】网站和数据库视图【英文标题】:Websites and Database Views 【发布时间】:2010-08-24 22:32:57 【问题描述】:

网站访问数据库视图而不是使用存储过程有哪些安全隐患?有问题的观点只是被阅读;未写入。

编辑

有问题的应用程序是使用实体框架 (v.4) 的 ASP.Net MVC 2。

【问题讨论】:

这个问题至少和建议一样多,但是通过存储过程访问视图是不可能的吗? 【参考方案1】:

一个安全隐患 - 可能是最大的:如果您基于用户输入构建您的 select 语句,那么视图会让您面临与直接访问表相同的 SQL Injection 缺陷。

仅此而已,前提是您的 SQL 语句基于输入。如果您只有一个静态视图,并且从不根据输入进行过滤或排序,只需从视图中选择字段,那么使用不带参数返回相同结果的存储过程就不会更安全或更不安全。

除此之外,在我看来,使用存储过程只是一个好习惯,并且在 SQL Server 中,您可以从存储过程中获得优化功能,但这与安全性无关。

【讨论】:

很高兴知道。我正在从用户控件中检索一些 ID,但没有“自定义”用户输入。数据包含在 Linq 语句和 lambda 表达式中,并且 - 在适当的情况下 - 首先进行清理。【参考方案2】:

视图根本不会让您遭受注入攻击。糟糕的代码可以做到这一点。即使您使用连接/内联 SQL 的存储过程,也不会出现问题。

使用准备好的语句。你会好起来的。使用视图比调试丑陋的存储过程容易 100 倍。

【讨论】:

以上是关于网站和数据库视图的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 中视图有啥作用,啥时候有需要用到,能够提供一些学习的网站或者资料?

多个表的视图使网站变慢

如何将UIWeb视图控制器的内容共享到社交网站?

SharePoint 树视图自定义

使用 SQL 视图的充分理由是啥?

如何自定义引导数据表搜索框和记录视图位置