PHP中的htmlspecialchars

时间:2017-01-17 23:04:09

标签: php css tags xss

有人可以帮助我在此代码中添加htmlspecialchars来阻止XSS:

<?PHP
    if(isset($_POST['update'])) { 
        $ts=$_POST['ts'];
        $user=$_POST['user'];

        mysql_query("UPDATE users SET block_newfriends='". mysql_real_escape_string($ts). "'  WHERE username='" .mysql_real_escape_string($user) . "'");
        echo '<div class="rounded-container">';
        echo '<div class="rounded-green rounded-done">';
        echo '<b>reload</b><br>';
        echo '</div>';
        echo '</div>';
    }
?>

我不知道把它们放在哪里,它应该在POST功能中吗?

2 个答案:

答案 0 :(得分:0)

将$ ts和$ user行替换为:

$ts=htmlspecialchars($_POST['ts']);
$user=htmlspecialchars($_POST['user']);

然后单独保留查询,然后在htmlspecialchars剥离的值上使用mysql_real_escape_string()

答案 1 :(得分:0)

根据您的目的,您需要使用不同的功能使其安全:

当您输出到HTML时,请将其设为&#34; html-safe&#34;通过包裹htmlspecialchars

echo 'Writing to browser ' . htmlspecialchars($_POST['t']);

输出到SQL时,使其成为&#34; sql-safe&#34;通过转义为sql(参见下面的注释)。

$sql = 'UPDATE table SET field="' . mysql_escape_string($_POST['t']);

当您输出到网址时,请将其设为&#34;网址安全&#34;通过转发它来获取网址。

$link = 'http:/example.com?value=' . urlencode($_POST['t'])

类似的规则适用于JSON编码,输出到XML等。

关于mySQL的注意事项:你是正确的逃避它,但你正在使用PHP中不再存在的函数(因此你使用的是旧版本的PHP)。检查手册中的mysqlipdo,然后使用这些功能。