今天,我们来学习下自动传输数据的安全问题。在Unix操作系统中自动批量发送数据文件的方法主要有两种:一种方法是在用户的宿主目录下增加.netrc文件,并在文件中加入远程机器的host名、用户名和密码,然后在建有.netrc文件的用户登录后用ftp自动批量发送文件;另一种方法是用Unix的shell编写一个批处理的脚本文件, 以执行该脚本文件来自动批量发送数据。
Unix操作系统中上述两种方法虽然都可以实现自动批量发送数据文件的目的,但却存在一些安全隐患。这两种方法都使用了纯文本文件的方式来存放远程机器的host名、IP地址、用户名和密码,因此只要用简单的Unix命令如cat、vi、more等就可以对远程机器的主要秘密一览无遗。
为增加Unix操作系统安全性,必须对这些秘密信息进行隐藏和加密。笔者用C语言程序的二进制代码封装远程机器的IP地址、host名、用户名和密码以增加其安全性。在用C语言进行编程封装时,注意不能在程序中把远程机器的IP地址、host名、用户名和密码等重要信息直接赋值给字符串变量。
如果直接赋值给字符串变量,就很容易被人用Unix命令strings、hd和的常用pctools从C程序的二进制代码中找到上述重要信息。还要注意不能在Unix操作系统程序执行过程中产生带有上述远程机器重要信息的中间文件。
如果出现这些中间文件,虽然可以在程序结束前删除它们,但遇到发送的数据文件数量多时间长时, 这些中间文件就有可能被调看而泄密,所以***不要在程序中产生中间文件。
下面这个简短的Unix操作系统程序例子是从本地机器的超级用户中把数据文件发送到另一台机器的超级用户中, 可以实现多个文件的连续自动批量发送。尽管该程序使用了超级用户进行数据发送,但由于编程时进行了巧妙的设计,所以当它被编译成可执行代码后,很难从这些二进制代码中发现有关本地计算机和远程计算机的安全方面的重要信息。同时,该程序采用了管道方法从而在执行过程中不会产生任何中间文件,安全性相对较高。实现代码如下:
- file://安全发送数据
- mainint argc,char *argv[]
- FILE *fftp
- printf“\f 从本机数据:\n”
- sprintfftpcmd,“%sCMD\n”,ftpcmd
- printf“\n正在发送……\n”
关于Unix操作系统中的自动传输数据的安全问题我们就讲解到这里了。
【编辑推荐】