2013-10-11 59 views
0

所以我想知道是否有一个可接受的方法来允许SQL注入。如何安全地允许SQL注入

例子:

在桌子上(S)/数据库(一个或多个)

限制权限,你问为什么?

我的雇主想要设计一种方法来测试申请人的技能,一个建议是允许通过SQL注入提交简历。

有什么想法?建议?

enter image description here

+4

我认为你的老板需要把技术性的东西留给专业人士。 –

+0

不要误会我的意思,但人们正在寻找方法来防止SQL注入,而你的老板正在寻找方法来获得它!奇怪:) –

+0

你是一个多么有趣的公司。我认为具有有限角色的独立实例应该可以做到这一点 –

回答

1

你可以使用的角色。为用于连接数据库的Web应用程序(或其他)创建一个角色。限制此角色仅允许INSERT并访问必要的表格以进行申请。通过应用程序访问数据库的申请人只能使用SQL注入来添加他们的简历。

SQL中更有才能的人可能有可能以增加角色权限的方式使用注入。但是我认为,如果角色只能访问特定的表并且没有CREATEGRANT特权,则用户将无法创建新角色。

下面是一些角色的信息,让你开始:

Adding Roles to MySQL with MySQL Workbench

Creating Roles in PostgreSQL

GRANT command - 用于权限添加到用户的表,数据库等,这页是PostgreSQL的,但MySQL非常相似(请参阅this SO answer

+0

不会申请人能够插入他们的简历,而不需要SQL注入吗? –

+1

如果您只有一个表格,申请人可以输入姓名和电子邮件,以便在职位发布时发出警报。没有直接的方式来上传简历,但表单提供了联系数据库。然后类似漫画,你可以把'马特');在名称字段中插入“恢复...”。 我不清楚你为他们设置了什么或者给出了什么指示。 – Matt

+0

或者,您可以为申请人提供一个单独的数据库来注入他们的信息。申请人可以规避最初的有限访问,并尽可能多地损害他们想要的,而无需您的雇主丢失他们所需的任何信息。 然后有一个脚本将信息保存在其他地方(这样一个申请人不会删除其他简历),并将数据库权限重置为其初始受限访问权限。 – Matt

-1

鉴于背后的原因是为了测试人们的能力,请创建一个数据库,其中包含您可承担的数据失去。设置一个表单,将其张贴到coldfusion或php或java或.net或其他类型的连接到该数据库的页面。

在窗体上,放一个textarea并提交按钮。在表单目标页面上,记录他们放在textarea中的内容。比较日志和数据库,看看它是如何结果的。

然后测试你的心脏的喜悦。