如何防止 Linq DataContext.ExecuteQuery 修改数据
How do I prevent Linq DataContext.ExecuteQuery from modifying data
我有一个自定义脚本引擎,允许用户对 TSQL 数据集执行查询。查询是自由形式并直接映射到对 'System.Data.Linq.DataContext.ExecuteQuery'
的调用
我希望用户能够查询数据和 return 结果,但不能修改数据,因为这会是一个安全问题。
目前我检查以下关键字的字符串:insert、update、alter、create、delete、drop、truncate、merge 和 exec。
但是,我怀疑有更好的方法,比如将上下文设置为只读或其他一些不依赖于我记住或解析所有可能的 sql 语句的方法等..
使用只有数据reader权限的用户连接数据库怎么样?这将完全消除问题并启用开箱即用的体面错误报告。检查 SQL 字符串中的单词似乎充其量是粗略的,例如,用户可以执行 SELECT ... INTO
直到现在你提到的关键字都没有处理。
我有一个自定义脚本引擎,允许用户对 TSQL 数据集执行查询。查询是自由形式并直接映射到对 'System.Data.Linq.DataContext.ExecuteQuery'
的调用我希望用户能够查询数据和 return 结果,但不能修改数据,因为这会是一个安全问题。
目前我检查以下关键字的字符串:insert、update、alter、create、delete、drop、truncate、merge 和 exec。
但是,我怀疑有更好的方法,比如将上下文设置为只读或其他一些不依赖于我记住或解析所有可能的 sql 语句的方法等..
使用只有数据reader权限的用户连接数据库怎么样?这将完全消除问题并启用开箱即用的体面错误报告。检查 SQL 字符串中的单词似乎充其量是粗略的,例如,用户可以执行 SELECT ... INTO
直到现在你提到的关键字都没有处理。