C# 防止桌面应用程序中的SQLite查询和用户打开数据库文件是否重要?

C# 防止桌面应用程序中的SQLite查询和用户打开数据库文件是否重要?,c#,sqlite,C#,Sqlite,生成SQL查询插入、更新、选择和删除的方法 但是请阅读SQL注入 当我的应用程序在本地PC上运行并且没有共享数据库,用户可以找到数据库文件并打开它时,防止注入很重要 为什么需要阻止我的查询被注入 class Cls_SQLGen { public static void SQLInsert(string TableName, string[,] ColNameValues) { string Query = "Insert into " + TableName +

生成SQL查询插入、更新、选择和删除的方法 但是请阅读SQL注入

当我的应用程序在本地PC上运行并且没有共享数据库,用户可以找到数据库文件并打开它时,防止注入很重要

为什么需要阻止我的查询被注入

class Cls_SQLGen
{
    public static void SQLInsert(string TableName, string[,] ColNameValues)
    {
        string Query = "Insert into " + TableName + " ( ";
        #region Build query for insert            
        for (int i = 0; i < ColNameValues.GetLength(0); i++)
        {
            string ColNames;
            if (i == ColNameValues.GetLength(0) - 1)
            {
                ColNames = ColNameValues[i, 0] + " ) ";
            }
            else
            {
                ColNames = ColNameValues[i, 0] + ", ";
            }
            Query += ColNames;
        }


        Query += "Values (";

        for (int i = 0; i < ColNameValues.GetLength(0); i++)
        {
            string ParamName;
            if (i == ColNameValues.GetLength(0) - 1)
            {
                ParamName = " @" + ColNameValues[i, 0] + ")";
            }
            else
            {
                ParamName = " @" + ColNameValues[i, 0] + ",";
            }
            Query += ParamName;
        }
        #endregion
        DAL.SQLiteAccessLayes.ExcuteCommand(Query, ColNameValues);
    }
}
当我的应用程序运行时,防止注入是否重要 本地PC和无共享数据库,用户可以查找数据库文件 打开它

出于安全考虑,不会。恶意用户可以随心所欲地破坏自己计算机上的数据

为了可靠性,是的。如果用户在字符串中输入包含“的文本,如果不阻止注入,应用程序将中断

假设用户输入O'Hare作为姓氏。未受保护的查询可能会写入以下SQL: 在[PERSON][Firstname]中插入,[Lastname]值为'JOHN','O'HARE'

这将是无效的SQL,应用程序将出错


但是,您粘贴的代码不足以说明它是否易受注入攻击。这取决于从何处获得要连接的值,以及是否存在问题。看起来您正在尝试参数化您的查询,这就足够了-但我很难弄清楚您试图使用该代码执行什么操作。

您阅读了吗?谢谢,但这与我的问题无关,但我很难弄清楚您试图使用该代码执行什么操作使用它为小型销售点软件,感谢您的回复