注入攻击一般指用户输入数据导致页面乃至整个网站、服务器异常的情况。
直接看一个例子:
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
</head>
<body>
<p>
<script type="text/javascript">
for (var i = 100; i >= 0; i--) {
alert('着了'+i);
}
</script>
</p>
</body>
</html>
页面上的被无情的执行了。试想,如果提供一个表单输入,提供用户评论使用,假设评论的内容就是
标签中的整个代码,那么所有正在浏览该评论页面的用户都会被小小的alert()击溃。
所以,我们在接受到来自用户输入的的信息时,需要进行防注入攻击处理,比如上面这种情况,我们就需要将<
、>
这种HTML实体字符进行转译再输出到页面。
<html>
<head>
<title>Test</title>
<meta charset="utf-8">
</head>
<body>
<p>
<script type="text/javascript">
for (var i = 100; i >= 0; i--) {
alert('着了'+i);
}
</script>
</p>
</body>
</html>
打开就是这种效果: