我们都知道所有用户数据,GET / POST / Cookie等都需要进行安全验证。
但是一旦它被转换成局部变量,你什么时候停止?
例如
if (isValidxxx($_GET['foo']) == false) {
throw InvalidArgumentException('Please enter a valid foo!');
}
$foo = $_GET['foo'];
fooProcessor($foo);
function fooProcessor($foo) {
if (isValidxxx($foo) == false) {
throw Invalid......
}
//other stuff
}
对我来说,这就是顶部。 但是如果从数据库中加载值...
我希望我有道理:)
答案 0 :(得分:2)
答案 1 :(得分:1)
答案 2 :(得分:0)
答案 3 :(得分:0)
回答你的问题$ _GET和$ _POST 永远不会被信任。但是,在使用变量之前,它不是漏洞。如果您将其打印出print($_GET[xss])
,那么您有一个xss漏洞。如果您将此变量插入数据库然后将其打印出来(如论坛帖子),那么您有存储的xss ,这更糟糕。
您需要更好地了解攻击者的心态。像$ _GET这样的变量是污点的来源,像print()
和mysql_query()
这样的函数调用是汇点。黑客正在寻找他可以用受污染的变量影响的汇。在PHP中有很多接收器,我建议阅读this black paper(或红纸,无论其确定性不是白色......)。请务必阅读语言与程序员的相关部分。