[英]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)。 检查手册中的mysqli或pdo并改用那些功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.