0

请帮助我编写 SWIG 交互。

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


补充

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

4

3 回答 3

3

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

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


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

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

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

但这就是您建议使用的。

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

于 2009-12-17T08:54:28.487 回答
1

查看Inline::C作为 SWIG 的替代品(或温和的包装器)。你会从 Perl 开始使用 C 比尝试学习如何使用 SWIG 快得多。

于 2009-12-17T17:18:18.473 回答
-1

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

于 2009-12-17T12:45:07.623 回答