首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重载本机PHP函数以加密数据以确保HIPAA遵从性

问重载本机PHP函数以加密数据以确保HIPAA遵从性
EN

Stack Overflow用户
提问于 2010-07-15 20:47:47
回答 6查看 1.6K关注 0票数 9

背景资料:

我是一个开发团队的一员,它运行一个存储和检索HIPAA (医疗)数据的web应用程序。最近,对HIPAA指南进行了更新,以包含一项策略,该策略要求在“处于静止状态”时对所有标识客户端信息进行加密(存储在数据库中而不被访问)。

初始问题

我们必须解决的第一个问题是确定双向加密数据的最佳方式,使数据在发生泄露时安全。

初始解

我们想出的最快的解决方案是在将数据插入数据库之前使用密室加密数据。

新问题

我们正在开发的应用程序非常古老(作为web应用程序),它使用大量的过程编程以及对查询函数的大量依赖来插入、更新、检索和删除数据。我们没有时间或奢侈地将我们的代码转换成数据库抽象层。因此,实现这个加密/解密系统的唯一方法是手动编辑所有CRUD查询,以使用通过密室加密的数据。这是非常低效率和极容易出错。

我们提出的解决方案

我们决定,解决问题的最快和最有效的方法是用我们自己的设计之一覆盖本机查询函数。在我们的新函数中,我们将在将查询发送到服务器/返回结果集之前对数据值进行加密/解密。

你们进来的地方

  1. 这是解决我们最初问题的最好办法吗?
  2. 如何覆盖现有的核心PHP函数?
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-07-15 21:14:13

尽管您之前已经说过不能/不会将代码转换为数据库抽象层,但我认为这将是理想的解决方案。当然,现在还需要做更多的工作,但这是有回报的。您建议的是黑客攻击,这可能(而且可能会)导致错误和头痛在未来。

接下来最好的做法是加密整个数据库,就像注释中所建议的那样。有不同级别的透明加密解决方案,即:这或这。

另一件您可能想了解的事情是MySQL的原生加解密函数,如果您关心性能,可以使用它来实现列级加密。

票数 3
EN

Stack Overflow用户

发布于 2010-07-15 22:57:28

虽然最好的解决方案是其他答案所建议的抽象层,但是您可以用自己的PECL Runkit扩展版本覆盖现有的PHP函数。

类似于:

代码语言:javascript
复制
runkit_function_rename ( 'mysql_query', 'mysql_query_old' );
function mysql_query ( $query , $link_identifier=null ) {
   // modify $query here for UPDATE/DELETE statement and any WHERE clause, etc
   $newQuery = modifyQuery($query);

   if (is_null($link_identifier)) {
      $result = mysql_query_old ( $newQuery);
   } else {
      $result = mysql_query_old ( $newQuery, $link_identifier);
   }
   // modify $result here for returned data from any SELECT statement
   return modifyResult($result);
}

注意:默认情况下,只能删除、重命名或修改用户空间函数。为了覆盖内部函数,必须在runkit.internal_override中启用php.ini设置。

这不是我真正推荐的解决方案。几年前,我不得不在java中做一些类似的事情,在那里扩展jdbc要容易得多;但是,虽然解析SQL查询的语法足够困难,但如果您的查询使用绑定变量,则更加困难。小心逃脱的绳子!注意mysql_db_query等相关函数的任何使用,以防它们与应用程序中的mysql_query一起使用!

为不稳定的打字表示歉意。在我写这个建议的时候,我妻子已经把我们的路由器推了好几次了

票数 2
EN

Stack Overflow用户

发布于 2010-07-16 00:25:58

我认为自动处理这个问题的一种方法是查看MySQL代理

并通过它实现加密。大约两年前,当它还处于非常早期的阶段时,我就玩过了,据我所记得,它基本上可以拦截请求并与它们进行“东西”:)根本不需要进行任何代码更改。希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3259931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档