0

我正在寻找一个很好的解决方案来防止mysql注入和xss攻击。我已经阅读了很多主题,但对我来说还不清楚。

我只想允许一些 bb 代码,如 [b]、[i]、[u]。就这样。

你能告诉我这是否可以:

<?php
$escape = array('input_one','input_two','get_ids_from_url','etc');

foreach($escape as $input)
{
    if(isset($_POST[$input])) 
    {$_POST[$input] = mysql_real_escape_string(htmlspecialchars(strip_tags($_POST[$input]), ENT_QUOTES, 'utf-8'));}
    if(isset($_GET[$input])) 
    {$_GET[$input] = mysql_real_escape_string(htmlspecialchars(strip_tags($_GET[$input]), ENT_QUOTES, 'utf-8'));}
}
?>
4

1 回答 1

2

您在这里所做的是转义输入以用于两种不同的用途:HTML 和 MySQL。不要那样做;魔术引号被删除是有原因的。

您应该做的是转义实际使用变量的位置,并且在数据库访问的情况下,使用 PDO 或 MySQLi 而不是几乎不推荐使用且通常很糟糕mysql_的函数系列。

于 2012-08-31T00:33:43.653 回答