小编cmp*_*ken的帖子

存储社会安全号码

我目前工作的公司的人力资源部门要求我提供一个系统,用于在我们公司的数据库中存储员工社会安全号码.这样做的原因是简化了工资单的完成,因为我们使用内部软件来处理员工时间表,但必须与我们实际工资单系统的第三方软件集成.这是一家规模相对较小的公司(20-30名员工),我们只会存储当前员工的SSN(因此违规只会产生有限的影响),但我仍然愿意依靠安全保障.

我想知道是否有任何约定存储与社会安全号码一样敏感的信息.我不是很擅长加密,我知道有几种加密技术我可以诉诸,但我想知道是否有一种特别适合这种情况的方法.AES是我最好的选择吗?

至于当前的软件,我们运行MySQL,我们的Web界面是用PHP编写的,并在IIS服务器上运行.

mysql encryption

25
推荐指数
4
解决办法
2万
查看次数

将代码与数据库功能分开

我正在开发一个面向对象的PHP网站,我正在尝试确定从系统其余部分抽象数据库功能的最佳方法.现在,我有一个DB类来管理系统使用的所有连接和查询(它几乎是MDB2的接口).但是,在使用这个系统时,我意识到我的代码中到处都有很多SQL查询字符串.例如,在我的User类中,我有这样的东西:

function checkLogin($email,$password,$remember=false){
    $password = $this->__encrypt($password);
    $query = "SELECT uid FROM Users WHERE email=? AND pw=?";

    $result = $this->db->q($query,array($email,$password));

    if(sizeof($result) == 1){
       $row = $result->fetchRow(MDB2_FETCHMODE_ASSOC);
       $uid = $row['uid'];
    }else{
       return false;
    }

    /* Rest of the login script */
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是找出减少内联SQL数量的最佳技术.我知道这样做的一种方法是在User中为User使用的每个查询编写函数(如下所示),但这可能导致相当多的函数.

function checkLogin($email,$password,$remember=false){
    $password = $this->__encrypt($password);
    $uid = $this->do_verify_login_query($email,$password);

    /* Rest of the login script */
}

function do_verify_login_query($email,$encpw){
    $query = "SELECT uid FROM Users WHERE email=? AND pw=?";
    $result = $this->$db->q($query,array($email,$encpw));

    if(sizeof($result) == 1){
       $row = $result->fetchRow(MDB2_FETCHMODE_ASSOC);
       return $row['uid']; …
Run Code Online (Sandbox Code Playgroud)

php database

8
推荐指数
1
解决办法
405
查看次数

在派生类中重新定义方法返回类型而不使用泛型

长话短说:

是否有某种方法可以将抽象方法添加到基类中,从而允许派生类覆盖该方法的返回类型,而无需使用泛型,并且无需使用关键字new


我正在为 LLBLGen Pro 开发一些自定义模板。在此过程中,我拒绝更改 LLBLGen Pro 提供的默认模板,这样如果其他人选择实施我的模板,我的方法就不会覆盖他们的文件。

我开始处理(并取得了良好进展)的一项任务是开发一个为每个实体生成 DTO 的模板。沿着这些思路,一个目标是为我的实体提供一种ToDTO()方法。为了进行泛型编程,我决定在公共基类中定义此方法,这就是我的麻烦开始的地方。


请记住,ToDTO()在基类中定义方法的目的是因为我希望创建一个通用存储库(Fetch()例如,使用方法),我希望在该存储库中工作CommonEntityBase,而不是特定实体。


LLBLGen 定义其CommonEntityBase类如下:

public abstract partial class CommonEntityBase : EntityBase2 {
   // LLBLGen-generated code
}
Run Code Online (Sandbox Code Playgroud)

我最初的计划是将我的方法添加到另一个部分类中,如下所示:

public abstract partial class CommonEntityBase {
    public abstract CommonDTOBase ToDto();
}
Run Code Online (Sandbox Code Playgroud)

我认为继承的类能够将其方法中的返回类型定义为从基类的返回类型派生的类型,如下所示:

public partial class PersonEntity : CommonEntityBase {
    public override PersonDTO ToDto(){ return new PersonDTO(); }
}
Run Code Online (Sandbox Code Playgroud)

但是我错了


我的第二次尝试是使用泛型定义类,如下所示:

public abstract partial class CommonEntityBase<T> : CommonEntityBase 
      where …
Run Code Online (Sandbox Code Playgroud)

c# inheritance partial-classes llblgen

0
推荐指数
1
解决办法
1822
查看次数

标签 统计

c# ×1

database ×1

encryption ×1

inheritance ×1

llblgen ×1

mysql ×1

partial-classes ×1

php ×1