失败我目前在我的网站使用此代码显示错误信息:
<?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']];
}
就一定要包括错误.php在您的config.php文件(或任何您的主要配置的文件名是)。
为什么?
恕我直言,这是很多安全使用整数比在这种情况下字符串。
你可以(当然总是应该,帽尖@DaveRandom)为了防止一些聪明的建设从过去获得的标签剥离器做htmlspecialchars()
strip_tags
之后。我从来没有见过这样做的成功,但它不能伤害采取额外的预防措施。
如果你这样做,这看起来很安全。
请注意,GET请求的最大大小有一个限制 - 1kb是最大安全数量。
尽管我同意这种观点,即使你不是“完全偏执狂”,你也可能会这样做 - 一个错误消息可以合理地包含任何'<>&` – DaveRandom 2011-12-15 17:03:23
根据您拥有的PHP版本,filter_input()
是一个不错的选择。
佩卡说什么是丹迪,但更好的解决方案是定义数组或函数中的所有错误,然后通过传递错误发生时设置的$ _SESSION变量来访问它们 – 2011-12-15 17:05:35
公平点@劳伦斯,虽然它是一个如果你有动态数据,实现起来更复杂一些。 – 2011-12-15 17:19:58