用户的MySQL SQL规则

时间:2014-03-28 05:15:51

标签: security mysql database sql-server

假设我有一个MySQL数据库,其表session_data包含:

| ID | SESSION_KEY | SECRET_DATA
| 100| ABCDEFGHIJK | bankAccountNumber=123123

通常,在网络应用程序收取其银行帐号之前,用户必须使用其会话密钥ABCDEFGHIJK进行身份验证。换句话说,只有提供有效的会话密钥,应用程序才有合理的理由需要bankAccountNumber

例如

SELECT `SECRET_DATA` FROM session_data WHERE `SESSION_KEY` = 'ABCDEFGHIJK' LIMIT 1;

因此,我知道如果有人试图SELECT SECRET_DATA FROM session_data;SELECT * from session_data;它可能是恶意用户,他在我的应用程序中找到了一个漏洞。

(这是一个假设的例子,我实际上并没有这样做。)

因此,为了限制他们可以造成的伤害,我想在我的MySQL数据库中添加一个过滤器。

因此,假设攻击者设法获取我的应用程序的SQL凭据,MySQL数据库本身将拒绝SECRET_DATA的任何SESSION_KEY未附带任何SESSION_KEY的查询。对于试图获取信息的攻击者而言,凭据仍然无用,因为他无法查询数据库并在不提交SESSION_KEY的情况下返回任何有用信息,并且如果他提交了无效{{1} ,根本没有任何结果行(如果他提交了有效的SESSION_KEY,他也可能只是使用了我的应用程序的公共可用界面,并作为合法用户进行身份验证。)

如何编写存储过程(此时不可行),我将如何实现这样的过滤器?我听说过MySQL Proxy,但我不太确定它是否能够做到这一点。

0 个答案:

没有答案