繁体   English   中英

htmlPHP中的特殊字符

[英]htmlspecialchars in PHP

有人可以帮我添加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函数中对吗?

将$ ts和$ user行替换为:

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

然后mysql_real_escape_string()会查询,它将在htmlspecialchars剥离值上使用mysql_real_escape_string()

您需要根据要执行的操作使用不同的功能使其安全:

当输出为HTML时,请包装在htmlspecialchars使其变为“ html安全”。

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

当您输出到SQL时,请通过转义sql使其成为“ sql-safe”(请参阅​​下面的注释)。

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

当您输出到URL时,通过将其转义为url使其“ URL安全”。

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

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


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM