AppleScript->回显到终端——可以在日志中看到吗?

AppleScript->回显到终端——可以在日志中看到吗?

我不知道这个问题在这里更好,还是在 Apple/Mac 世界更好……但我确实需要一个像样的答案。

我正在使用 Applescript 从电子表格或数据库中的字段中提取数据,并将它们直接推入终端:

echo "thisismydatastring and my saltbits" | openssl aes-256-cbc -k thisismypassword -base64 

我的问题:有没有一种方法可以过滤日志文件以捕获密码的明文实例?

有没有更好的方法来防止黑客攻击?

PS:出于对皮特的热爱,如果你足够聪明(或尖酸刻薄)愿意编辑我的文章,至少对这个问题提供一个理智的答案。

答案1

如果您不希望您的密码出现在您的 shell 历史记录中(或者很容易从 中获取ps),那么不要将密码放在命令行上

一种替代方法是将密码放入文件中,将权限设置为 600,并在命令行上chmod使用它来代替密码。$(cat passwordfile)

如果您不信任系统上的 root,或者您认为系统上的其他用户可能能够获取 root 权限,那么这是不安全的。

例如

  • 编辑/.mysecretpassword并添加您的密码。
  • chmod 600 ~/.mysecretpassword
  • 跑步:

    echo "thisismydatastring and my saltbits" | 
      openssl aes-256-cbc -k "$(cat ~/.mysecretpassword)" -base64
    

同样,如果"thisismydatastring and my saltbits"是敏感的,也不要将其放在命令行上。将其放入文件中并将其通过管道传输到openssl.

openssl可以选择从文件描述符中读取密码。如果您编写包装器脚本来运行 openssl,这非常有用。

#!/bin/bash

# use file descriptor 99 for no particular reason. a completely arbitrary choice,
# as long as it's not already in use (probably isn't).
exec 99< ~/.mysecretpassword

openssl aes-256-cbc -base64 -k fd:99 

将其保存在 $PATH 中的某个位置,使其可执行chmod(如果您担心窥探者,则 700 可能是最好的),然后您可以通过管道或将数据重定向到其中。它可能比该方法稍好一些,$(cat ...)因为它不在~/.mysecretpassword任何命令行上命名(因此不会保存在历史记录中或在 中可见ps)。

这种文件描述符方法仍然只是默默无闻的安全性,因此对于不受信任的根帐户或可以获得根的用户来说并不安全。

您可以通过使用加密的文件系统来稍微提高安全性,您可以在需要时手动安装该文件系统(并手动输入密码...并希望没有人记录您的击键),并在完成后卸载。 Applescript 暗示您使用的是 Mac - 不知道如何在 OS X 上执行此操作,但在 Linux 上,如果您在计算机上没有 root 权限,则可以使用 FUSE。

通常认为,在您无法完全控制的机器上或有其他(可能是敌对的)用户的机器上进行加密操作是一个坏主意。 (为了更安全的加密,不要在连接到网络的机器上进行......更好的是,在 100 英尺深的混凝土掩体底部的铅衬里房间的法拉第笼中使用未联网的机器通过软盘(而不是 USB 设备)或通过 QR 码传输 Base64 加密数据...打印或在屏幕上显示 QR 并用手机扫描)

更简单地说:如果您有任何理由怀疑您不能完全信任您所在的计算机,并且数据保密很重要,那么请勿将其用于加密。犯错误的方式有很多种,但只需要一种就可以完全妥协。


顺便说一句,如果您正在使用bash,您可以从~/.bash_history 您可以通过按向上箭头退出该 shell,直到看到要删除的行,然后Ctrl-U再次键入并按向上箭头。

或者,您可以通过运行来清除该 shell 会话的整个历史记录history -c 你退出那个外壳。这不会清除已保存到 .bash_history 文件中的任何内容。

如果密码或其他敏感数据已保存到您的 .bash_history 中,那么您唯一的选择就是在再次登录时删除或编辑您的历史文件。注意:它可能已经备份或快照 - 即来不及修复。

相关内容