从中心点(控制器核心)处理数据安全


Handle data security from a central point (Controller Core)?

我有一个Controller_Core类,目前什么都不做,但是当我想集中一些通用代码时,我可以把它放在那里。

我想知道是否有可能工作的另一种方式,当一个有一个类从Controller_Core扩展。假设一个典型的User有一个Controller_User类。在该类中,我希望自动向该类中每个函数提供的参数添加斜杠。这是可能的,而不声明一个函数foo在Controller_Core,它做的东西像mysql_real_escape_string ?

换句话说,是否有可能从(ny)类中的方法中自动执行mysql-real-escape参数?

使用的语言是PHP。

- update

假设我有这样的代码:

class Controller_User extends Controller_Core
{
  public function Login($sUsername, $sPassword)
  {
    # the add-slashes action should be done automatically at this point without calling a specific for such functionality (thus; $sUsername and $sPassword should be 'add-slashed' from RunFromEachCalledExtendedFunction)
    $bValidationResult = // some further code
    return $bValidationResult;
  }
}
class Controller_Core 
{
  public function RunFromEachCalledExtendedFunction
  {
    # some code to determine which method was called, then add-slash those parameters
  }
}
$oControllerUser = new Controller_User();
$bLoginResult = $oControllerUser->Login("my username' OR 1=1", "my pwd");

您不应该只在一个特定的控制器中转义数据,而是在您的所有查询中!
如果您真的不想担心SQL注入,请使用PDO。

如果你坚持使用mysql_query -创建/使用一个数据库类包装器和使用mysql_real_escape_string函数在执行查询的所有方法。像这样:

DB::select()->from('table')->where('field1', '=' $param1);

where()方法将使用mysql_real_escape_string函数