我目前使用以下代码在我的网站上显示错误:
<?php
$failure = strip_tags($_GET['failure']);
if($failure!=""){
echo '<div class="error">';
echo $failure;
echo '</div>';
}
?>
但是,我很好奇这是否安全。是吗?
我目前使用以下代码在我的网站上显示错误:
<?php
$failure = strip_tags($_GET['failure']);
if($failure!=""){
echo '<div class="error">';
echo $failure;
echo '</div>';
}
?>
但是,我很好奇这是否安全。是吗?
虽然这个解决方案会稍微改变你的方法,但为什么不使用这种结构的errors.php文件呢?
$error[1] = 'some error message';
$error[2] = 'some other error message';
$error[3] = '...'; // you get the point
并且只是发送一个 ID 作为错误:
somepage.php?failure=2
然后,在您通常显示错误的位置包含此代码:
if($_GET['failure'] && array_key_exists($_GET['failure'],$error) {
echo $error[$_GET['failure']];
}
只需确保在您的config.php文件中包含errors.php(或任何您的主要配置文件名)。
为什么?
恕我直言,在这种情况下使用整数比使用字符串要安全得多。
你可以(当然总是应该,帽子提示@DaveRandom)做一个htmlspecialchars()
之后strip_tags
,以防止一些巧妙的构造通过标签剥离器。我从未见过一个有效的漏洞利用成功地做到这一点,但采取额外的预防措施也无妨。
如果你做了所有这些,这看起来很安全。
请注意,GET 请求的最大大小是有限制的 - 1kb 是一个安全的最大数量。
根据您拥有的 PHP 版本,这filter_input()
是一个不错的选择。