安全性-包含无效值时死亡或替换


Security - Die or replace on invalid value for include

我想知道以下哪种解决方案更安全。

if(!ctype_alpha($_GET['a'])){
    //another string can be put here if necessary
    die('No Hacking!');
}

if(!ctype_alpha($_GET['a'])){
    //Changed for security in depth, in-case I accidently use $_GET['a'] elsewhere. Designed to simulate header('Location: ./?a=default_value');
    $_GET['a'] = 'default_value';
}

在脚本的后面会发生类似于以下内容的情况:

//make_safe is defined elsewhere, it is security in depth (redundancy) to remove slashes if they get past ctype_alpha using some unknown bug
$var = make_safe($_GET['a']);
require_once("./data/include/$var.php");

在我目前正在读的一本书中,它说最好停止所有不遵守我规则的输入,而不是纠正。因此,我的问题归结为,用默认参数替换$_GET[’a']是否算作停止输入,或者必须使用die()?

Die('fu')是一个肮脏的东西。

如果需要的话,我更喜欢用默认值清理输入的方式。

顺便说一句,这就是大公司的做法(在谷歌上查看,搜索一些东西,转到第2页,现在将url中的start参数更改为非数字参数,您将返回第1页)。

另外,当黑客攻击东西时,你会尝试让应用程序以一种独特的方式运行。

如果你的行为总是一样,这对黑客来说是非常令人沮丧的,他们希望很快就会感到无聊。