问题标签 [database-security]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2229 浏览

sql-server - 防止对某些表执行 SQL Server 表操作(INSERT 和 DELETE)

在我们的数据库上处理一些随机的 sql 查询时,我们可能不想通过错误地输入它们的名称来向某些数据库表插入或删除项目。那么如何让他们锁定到“编辑”状态,才能安全工作。

谢谢。

0 投票
6 回答
8278 浏览

database - 如果我的服务器被盗,PostgreSQL 数据库的安全性如何?

如果我的服务器在 PostgreSQL 中有一个绝密数据数据库,而我的密码实际上是不可能猜到的(128 个各种奇怪字符的字符串,手工生成)。服务器密码实际上也无法猜测。

除了猜测密码之外,从这个数据库中获取数据有多容易?

假设:

  1. 服务器上只存在数据库。PHP脚本中没有密码或类似的东西
  2. 偷服务器的人是服务器/数据库/硬盘恢复专家
  3. 我没有使用任何硬盘加密或任何不规范的保护措施
  4. 我正在使用 Ubuntu Hardy(最新稳定版本)

我试图了解某人物理访问我的服务器硬盘驱动器所涉及的风险。

0 投票
3 回答
26760 浏览

database - 要求客户设计数据库的问题和注意事项

所以正如标题所说,我想听听您的建议,在为他们的应用程序设计数据库之前要考虑和询问最终用户最重要的问题是什么。我们要做的是面向数据库的应用程序,特别注意数据库安全(访问控制、加密、完整性、备份)...一定很好。

我曾在学校项目中使用数据库,但这是第一次在“现实世界”中工作,这种数据库安全性具有真正的影响。

所以我在网上找到了一些建议和问题要问,但在这里我总是能得到最好的。所有帮助表示赞赏!谢谢!

0 投票
2 回答
134 浏览

database - 数据库安全/扩展问题

通常,我在与使用它的应用程序相同的机器上使用 MySQL 或 PostGreSQL 等数据库,这使得访问变得简单和安全。我现在正在构建第一个具有单独物理数据库服务器的站点(今年晚些时候它将)。我想知道3件事:

  1. (安全性)对于与访问单独机器数据库的安全性有关的初学者,我应该注意哪些事项?
  2. (可扩展性)我应该考虑的可扩展性问题是否与此有关(与技术无关)?
  3. (更多ServerFault但相关)如果在同一物理服务器上启动数据库(使用单独的 VMWare VM)然后移动到不同的物理服务器,是否存在我必须处理的隐含问题?不是仍然通过访问另一个VMlocalhost吗?

如果这些问题完全荒谬,我向你们 DB 专家道歉。

0 投票
2 回答
1446 浏览

asp.net-mvc-2 - 如何使用 ASP.NET MVC2 和 MS SQL Server 在共享数据库中实现租户视图筛选器安全模式

我开始在 ASP.NET MVC2 中构建 SaaS 业务线应用程序,但在开始之前,我想建立良好的架构基础。

我将采用共享数据库和共享模式方法,因为数据架构和业务逻辑将非常简单,效率和成本效益是关键问题。

为了确保租户之间数据的良好隔离,我想实现租户视图过滤器安全模式(看看这里)。为此,我的应用程序必须根据登录应用程序的用户来模拟不同的租户(数据库登录)。登录过程需要尽可能简单(它不会是企业级软件)——所以客户应该只输入他们的用户名和密码。

用户将通过他们自己的子域(使用子域路由)访问他们的数据,例如http://tenant1.myapp.comhttp://tenant2.myapp.com

满足这种情况的最佳方法是什么?

0 投票
7 回答
826 浏览

hash - 如何将一个人的身份与他的个人数据分开?

我正在编写一个应用程序,其主要目的是保留用户购买列表。

我想确保即使我作为开发人员(或任何可以完全访问数据库的人)也无法弄清楚某个人花了多少钱或买了什么。

我最初想出了以下方案:

  • 用户使用用户名和密码登录。
  • 从密码计算user_hash(可能与加盐等)。
  • 使用散列通过普通 SQL 查询访问用户数据。

如果有足够多的用户,只知道一个特定用户的名字几乎不可能知道他花了多少钱。

这是明智的做法,还是我完全愚蠢?

0 投票
1 回答
418 浏览

sql-injection - 是否有任何 SQL 注入工具,以便我可以测试我的网站的漏洞?

是否有任何 SQL 注入工具,以便我可以测试我的网站是否存在漏洞?有什么好的吗?免费的会很好。

0 投票
2 回答
176 浏览

sql-server-2005-express - 如何保护我的 winform 的 SQL 2005 Express 数据库中的数据?

我有使用 SQL 2005 Express 的 ac# winform 应用程序。该应用程序创建数学和阅读测验,并面向学龄儿童的父母销售。父母从我的网站购买并下载包含测验的 SQL 文件并将它们安装在应用程序中(安装在他们孩子的计算机上)。

我有两个 SQL 安全问题:

(1) 有些孩子可能不希望测验出现在他们的计算机上,因此他们可能会尝试 (a) 删除 SQL 数据库或 (b) 通过更改数据库中的值来禁用应用程序。

在我看来,任何使用 SQL Server Management Studio Express 的人都可以轻松更改数据库的内容。

因此,可以做些什么来防止这种情况(除了向家长建议不要让孩子使用管理员帐户)?

(2) 我唯一的收入将是测验的销售,所以我想保护这些数据不被复制和共享。考虑到(a)文件需要从我的服务器下载到孩子的计算机然后安装,并且(b)然后一旦安装,它们只是驻留在孩子的计算机上,我该如何做到这一点。

在我看来,任何拥有 SQL 数据库发布向导的人都可以轻松复制数据库的内容。

是否可以只允许我的应用程序访问 SQL 数据库?是否可以限制其他人访问它(即使是使用 Windows 管理员帐户的人)?

目前,我的应用程序的安装脚本仅为我的应用程序创建了一个新的 SQL 2005 Express 服务器实例,它使用 Windows 身份验证。

我已经在 Stackoverflow 和其他地方阅读了几篇 SQL 安全文章,但我还无法弄清楚这一点。

0 投票
3 回答
7743 浏览

sql - 使用动态 SQL 对存储过程的 SQL Server 权限

我有一个具有应用程序角色的数据库。角色成员都属于 Active Directory 中的一个组。我没有授予角色从表中选择的权限,而是授予角色对它需要调用的所有存储过程的执行权限。

这工作正常,除了我的一个存储过程正在构建一些动态 SQL 并调用 sp_executesql。

动态 sql 看起来像这样:

此角色的用户未能调用存储过程。它给出了以下错误,这是我想的一种预期:

对象“uvView1”、数据库“Foobar”、模式“dbo”的 SELECT 权限被拒绝。

有没有一种方法可以让我的用户成功执行此过程,而无需授予动态 SQL 中所有视图的角色权限?

0 投票
2 回答
3693 浏览

sql-server - 为什么没有内置的“存储过程执行者”数据库角色?

我一直想知道为什么数据库角色列表(db_datareaderdb_datawriterdb_ddladmin等)从未包含db_storedprocedureexecutor. 其他是有道理的,但似乎能够将执行所有存储过程的能力授予特定用户(不授予它们db_owner,这是完成同一件事的唯一其他方法)将是一件方便的事情。

例如,假设我想给我所有的开发人员运行存储过程的权利,同时不让他们执行任何 DDL - 没有在每个存储过程上明确授予 EXECUTE (然后记住在部署其他 SP 时添加新的) , 没有办法做到这一点(我知道 SP 可以包含 DDL,因此它们可能仍被间接允许以这种方式访问​​ DDL)。

如果我有一个应用程序服务帐户和许多与我的应用程序一起使用的存储过程,我必须明确地向每个 SP 授予权限(因为我不想授予我的应用程序服务帐户 DBO),而我可以使用角色以允许他们更新/删除他们想要的任何内容。

虽然最初看起来很明显,但我现在不确定为什么数据库服务器中缺少这个角色 - 任何人都可以解释为什么这是一个糟糕的想法(我认为它是,或者它已经存在)?

编辑:

似乎我不是唯一一个有这种期望的人——它已经使用了一些 T-SQL(似乎你可以授予一揽子 EXECUTE 权利,我不知道你可以这样做),这让我想知道为什么不标准!