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

时间:2009-12-17 07:49:25

标签: c database perl swig

请帮我写一下SWIG interace。

我想在C程序中打开一个数据库连接句柄。必须将此句柄传递给Perl,我将使用Perl DB接口与数据库进行交互。出于安全考虑,我们希望使用此机制。我想使用SWIG接口传递数据库句柄。


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

3 个答案:

答案 0 :(得分:3)

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

那么,为什么你认为这是一个好主意 - 以这种方式做事的安全性好处是什么,而不仅仅是让DBI处理连接呢?


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

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

'通过默默无闻的安全'根本不安全!

但这是你建议使用的。

请告诉自己如何从知道的人那里编写安全软件。或者阅读一些关于这个主题的优秀书籍。

答案 1 :(得分:1)

查看Inline::C作为(或温和包装)SWIG的替代方案。你会比使用Perl更快地学习如何使用SWIG。

答案 2 :(得分:-1)

我们正在使用Perl基础设施满足我们的业务需求。有太多的用户帐户,数据库服务器,遍布整个公司。我们希望商业密码是安全的,并希望只允许特权成员。之前我们已将所有密码放在一个文本文件中并从中读取。 如果我们保留在其他任何地方,那么他们将能够调试perl模块并找到它们。 如果我们在C中创建一个句柄并给出相同而不是返回密码,那将更有帮助。