检查只读查询字符串

Moo*_*ght 5 c# sql postgresql

我正在创建一个postgreSQL数据库阅读器,它还包括一个用户键入自己的查询的方法.我想通过检查键入的查询是否包含任何修改代码来保护数据库.这是我的检查:

    private bool chech_unwanted_text(string query)
    {
        if (query.Contains("DELETE") || query.Contains("delete") || query.Contains("CREATE") || 
          query.Contains("create") || query.Contains("COPY") || query.Contains("copy") || 
          query.Contains("INSERT") || query.Contains("insert") || query.Contains("DROP") || 
          query.Contains("drop") || query.Contains("UPDATE") || query.Contains("update") || 
          query.Contains("ALTER") || query.Contains("alter"))
        {
            return false;
        }
        else return true;
    }
Run Code Online (Sandbox Code Playgroud)

这是检查编辑安全查询的正确方法,还是有其他更可靠的方法来实现这一目标?

我知道授予用户权限,但这不起作用,因为我没有超级用户帐户.

Tho*_*que 9

您应该通过使用只对数据库具有读访问权限的帐户来处理此问题,而不是通过检查查询.大多数DBMS都有一种特权机制来处理这种事情,PostgreSQL肯定会这样做.