木子屋 Dnawo's BLOG

使用(function(){})()语句提高站点安全性

👤 dnawo 📅 2009-06-18 👁 4593 👍 0 💬 0 🔄 来源:本站原创
<script type="text/javascript">
function Alert(msg)
{
	alert(msg);
}
var m = "木子屋";
Alert(m);
</script>

先不考虑上边代码有无实际意义,假设上边代码存在于某个页上,构造适当的URL我们很容易就能修改m的值,例如:

javascript:m="www.mzwu.com";Alert(m);void(0);

甚至是修改Alert函数内容:

javascript:function Alert(msg){alert("hello,"+msg)};Alert(m);void(0);

这无疑会给站点带来一定的风险,下边我们使用(function(){})()语句对上面的代码稍加修改:

<script type="text/javascript">
(function()
{
	function Alert(msg){alert(msg);}
	var m = "木子屋";
	Alert(m);
})();
</script>

这样我们就无法构造URL来修改m的值了,此处的m相当于是C#类中的私有成员,我们无法访问到它,同样,我们也无法修改Alert函数的内容,除非重写(function(){})()语句,但这似乎没什么意义了。

评论(0)

暂无评论。

验证码
评论需审核通过后显示
← 上一篇 HttpUtility.UrlEncode将空格转换成加号引发的… 下一篇 → 使用||运算符给参数赋默认值