Php 要防止SQL/XXS攻击的类?

Php 要防止SQL/XXS攻击的类?,php,xss,sql-injection,Php,Xss,Sql Injection,我正在构建一个MVC应用程序来管理一个创造性的投资组合(将它放在GitHub上)。我需要一些东西来保护数据库连接,基本上我有一个类来管理所有的数据库事务 我需要创建一个类,或者找到一个可以保护所有SQL查询免受XXS或SQL攻击的类。对于保护PHP数据库连接,您有什么建议 只需使用此功能过滤您的帖子,获取请求即可 function protect($string) { if (ini_get('magic_quotes_gpc') == 'off') // check if m

我正在构建一个MVC应用程序来管理一个创造性的投资组合(将它放在GitHub上)。我需要一些东西来保护数据库连接,基本上我有一个类来管理所有的数据库事务


我需要创建一个类,或者找到一个可以保护所有SQL查询免受XXS或SQL攻击的类。对于保护PHP数据库连接,您有什么建议

只需使用此功能过滤您的帖子,获取请求即可

function protect($string) 
 { 
      if (ini_get('magic_quotes_gpc') == 'off') // check if magic_quotes_gpc is on and if not add slashes
            { 
             $string = addslashes($string); 
            }  
// move html tages from inputs
$string = htmlentities($string, ENT_QUOTES);
//removing most known vulnerable words
$codes = array("script","java","applet","iframe","meta","object","html", "<", ">", ";", "'","%");
$string = str_replace($codes,"",$string);
//return clean string
return $string; 
}

使用PDO准备好的语句访问数据库使查询不受注入的影响。

使用htmlspecialchars()使输出不受xxs的影响。

请停止在titles.PDO和striptags或htmlpurifier@Tomalak“你是说你不喜欢吗?”斯诺•麦克:标题中的标签只是噪音。我们已经有了一个一致且可索引的标签系统;没有必要重新发明一个不是!另一方面,PDO还使使用不同的rdbms变得更容易。@Snow_Mac上述方法既不安全,也做完全不必要的事情。首先,addslashes()函数不会阻止SQL注入。您需要使用特定于数据库类型的内容,例如mysql\u real\u escape\u string()。第二,你的字符串替换会弄乱你所有的HTMLEntity。。。例如,htmlentities()将“转换为html实体';(将在浏览器中显示为“a”),但在您删除所有内容之后;在字符串之外,html实体在浏览器中看起来就像',因为它不是html实体anymore@Snow_Mac既然html实体已经将',转换为html实体,那么为什么在去掉它们之后还要尝试将它们从字符串中去掉呢?这种卫生功能毫无意义。
$input = array_map('protect','$_POST');
$input = array_map('protect','$_GET');