在 Web 安全领域有一个词汇经常被提到——XSS。简单地说,就是网页被不信任源注入了可执行脚本。
比如:
// a.php 文件内容 <?php $email = $_GET['email'];?> <input type="hidden" name="email" value=<?=$email?>""/> // 访问 a.php?email=a%40a.com"%20onclick%3D"alert(1) // 在网页没有采取任何安全策略的情况下会弹出一个对话框 // 最后的火狐浏览器的截图是攻击者希望看到的
以上代码分别在 IE、Chrome、Firefox 中的效果。
IE 会检测可能的跨站脚本操作。
Chrome 也会检测 XSS 攻击,说明了为何出现此提示(its source code was found within the request),也说明了如何更好地工作。
不是我黑它,真没有,火狐版本 37.0.2。
这个内联的 onload 并没有包含 <script> 标签,但是它仍然可以执行。这个示例中只是弹出一个对话框,可能还有更严重的破坏行为。
为了避免出现 XSS 攻击,不能仅仅依靠浏览器帮我们检测,还需要我们有意识地去过滤这些不安全的脚本。