繁体   English   中英

Gnome的libgda和SQL注入

[英]Gnome's libgda and SQL injections

我正在使用Gnome数据访问(libgda)访问C程序中的数据库。 我使用GdaSqlBuilder构建查询。 这是一个示例代码,用于在请求的字段上添加相等条件:

GdaSqlBuilderId add_equal_condition(char* m_name, GValue* m_value)
{
    GdaSqlBuilderId name, value, condition;
    name = gda_sql_builder_add_id(builder, m_name);
    value = gda_sql_builder_add_expr_value(builder, NULL, m_value);
    condition = gda_sql_builder_add_cond(builder, GDA_SQL_OPERATOR_TYPE_EQUAL, name, value, 0);
    return condition;
}

libgda是否可以保护自己免受SQL注入的侵害,还是需要在输入传递给GDA之前自行清理输入?

预先感谢您的回答。

在前言中对此进行了解释:

创建包含值(文字)的SQL字符串时,可以尝试创建一个包含值本身的字符串,执行该语句,并在下次需要使用相同的语句时应用相同的过程(因为这是最简单的解决方案)。用不同的值执行。 这种方法具有以下两个主要缺陷,这就是为什么Libgda建议在语句中使用变量(也称为参数或占位符)并在仅变量值发生更改时重用同一GdaStatement对象的原因。

https://developer.gnome.org/libgda/unstable/ch06s03.html

即使当前版本不容易受到攻击,也不意味着每个将来的版本都不会受到攻击。 您应该始终无一例外地照顾用户提供的东西。

来自其他任何类型的系统的接口也是如此。 这不仅限于SQLi,也不是SQLi或您使用的库的问题。 您有责任使用户只能输入您希望其输入的种类数据,否则将拒绝该数据。 您不能依靠其他代码为您执行此操作。

通常:没有什么可以完全保护自己免受某种类型的攻击。 它将始终限于撰写本文时已知的攻击向量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM