c - 如何在 C 中打开数据库句柄并使用 SWIG 将其传递给 Perl?

标签 c database perl swig

请帮助我编写 SWIG 接口(interface)。

我想在 C 程序中打开一个数据库连接句柄。这个句柄必须传递给 Perl,我将在其中使用 Perl DB 接口(interface)与数据库进行交互。出于安全目的,我们想使用这种机制。我想使用 SWIG 接口(interface)传递数据库句柄。


已添加:

我们正在使用 Perl 基础设施来满足我们的业务需求。遍布整个公司的用户帐户和数据库服务器太多。我们希望企业密码得到保护,并且只允许特权成员使用。早些时候我们将所有密码放在一个文本文件中并从中读取。如果我们保留在其他地方,那么他们将能够调试 Perl 模块并找到它们。如果我们在 C 中创建一个句柄并提供相同的密码而不是返回密码,那将会更有帮助。

最佳答案

Perl DBI(数据库接口(interface))没有为将已经打开的数据库句柄传递给驱动程序做好准备 - 该接口(interface)假定(DBI 加上相关的数据库驱动程序或 DBD::XyzDBMS 模块)将建立连接。因此,充其量,您将编写代码来扩展 DBI 以实现这一点,并扩展相关的 DBD 以支持它,这是一项非常重要的练习。

那么,为什么您认为这是一个好主意 - 以这种方式做事而不是让 DBI 也处理连接有什么安全好处?


在应用程序中嵌入密码是错误的方式,从很多角度来看很难知道从哪里开始:

  • 更改密码意味着重新编译和重新发布程序,因此永远不会发生。
  • 每个人都使用相同的用户名和密码连接到数据库或网络服务,因此您不知道谁在进行连接。
  • 可以在对象文件中发现密码 - 如果攻击者真的担心,他们将能够找到它们,这是一个很有可能的赌注。
  • 等等。

“通过模糊实现安全”根本不安全!

但这就是您打算使用的。

请从那些知道的人那里获得一些关于如何编写安全软件的建议。或者阅读有关该主题的许多优秀书籍中的一些。

关于c - 如何在 C 中打开数据库句柄并使用 SWIG 将其传递给 Perl?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1920105/

相关文章:

perl - 为什么 websocket 连接中断

database - 删除数据库用户是否会触发用户在其他模式的表上引发?

数据库列混合内容类型

php - 使用 PHP 更新数据库

c - 由于某种原因,向子进程发送信号丢失了。 sleep 功能的改变导致了一种奇怪的结果

regex - 如何向带引号的正则 (qr) 表达式添加修饰符

perl - CGI::Application param() 未设置

c - Arduino IDE 在 Windows 中找不到 sys/time.h

c - 了解 C 数组和指针

c - 如何为 gcc 指定默认的全局变量对齐方式?