Cri*_*ole 3 c# sql ado.net sql-injection database-security
在ADO.NET中,您可以向命令对象添加参数,以将用户输入安全地添加到SQL查询中.SQL查询常见的其他谓词的等价物是什么?
我正在编写一个程序,它本质上是一个非常有限的OR映射器和SQL生成器(它主要关注具有元信息的数据库和符合该元数据的其他数据库).因此,我需要能够调用以下内容:
string sql = "select " + USER_SELECTED_COLUMNS +
" from " + USER_SELECTED_TABLE +
" where " + USER_CRITERIA;
Run Code Online (Sandbox Code Playgroud)
其中一些(如criteria)可信用户(我公司的其他开发人员)输入我的程序,而其他数据由不信任的用户(客户)通过他们的搜索等输入我的程序.
我想让这个程序安全,我知道上面的内容不是.目前我已经USER_SELECTED_COLUMNS用命令参数替换了,但是我无法找到CRITERIA和TABLEs的等价物.(或按订单列).是否有任何类似于SqlParameter我可以用于非选择谓词的ADO.NET功能?
我不认为我可以告诉你如何在1个响应中避免SQL注入,但是,我可以给你的主要指针是:
使用WHITELISTS,而不是BLACKLISTS.
也就是说,在对用户输入进行清理时USER_SELECTED_TABLE,可能的输入应该只是可能的表.同样,输入USER_SELECTED_COLUMNS应限于可能的列USER_SELECTED_TABLE.
| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |