使用 OrientDb 进行编程时如何防止 sql 注入OrientDB-NET.binary https://github.com/orientechnologies/OrientDB-NET.binary?有没有办法转义 Orient-SQL 的特殊字符并使用字符串文字?
示例:我想存储这个文字:me' or 1 = 1 ),'//
然后能够像这样查询它
select from MyVertex where text = '...'
我在 OrientDb 工作室中也遇到了麻烦。
我已经发现这个帖子 https://groups.google.com/forum/#!msg/orient-database/sytdxVTwk_w/zAR12xjZlhUJ这与Java驱动程序有关,所以我想知道.NET是否有类似的东西。
您需要使用参数化查询 http://blog.codinghorror.com/give-me-parameterized-sql-or-give-me-death/.
这些是分开的查询data from syntax,这是 SQL 注入背后的根本问题。
在 C# 中,使用 OrientDB-NET 二进制文件,您想要执行类似的操作(改编自OrientDB-NET 维基 https://github.com/yojimbo87/OrientDB-NET.binary/wiki#query-and-command-methods:
using (ODatabase database = new ODatabase("yourDatabase"))
{
PreparedQuery query = new PreparedQuery("SELECT FROM MyVertex WHERE text = ?");
var selectedValue = database
.Query(query)
.Run([***Your Input Here***])
.SingleOrDefault();
var text = selectedValue.GetField<string>("text");
}
您可以查看OrientDB-NET单元测试 https://github.com/orientechnologies/OrientDB-NET.binary/blob/441fb2fec10e50d659e26084010f3fe3c612d6ef/src/Orient/Orient.NUnit/Query/PreparedQueryTest.cs#L47对于PreparedQuery,请查看有关如何执行此操作的更多示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)