XSS无关乎架构,在于程序员的安全意识
作者:QZ
记得上次讨论XSS是从输入防还是从输出防,我的回答是从两方面防,但另外一点就是要考虑应用,同时需要按XSS出现的情况分风险等级。我举了三个简单的例子:
1.一个原来只需要整型的参数却允许传字符型在页面输出了XSS,这个就是BUG!
这个例子说明的是程序员的安全意识问题,因为偷懒,输入和输出都没有严格控制数据类型,如果你是程序员你要怎么修改这个漏洞呢,当然是输入和输出都给改咯。
一个很简单的逻辑:本来只允许输入数字的地方,你却可以输入字符,本来只允许输出数字的地方,你却可以输出字符。
于是乎碰到了这种情况,程序员已经对输入做限制了,某天又火急火燎的跑过来说网站被XSS了,仔细一看,原来是数据库里存的老数据,而程序在输出时没有做处理,莫名其妙的又被XSS了。
2. 严格控制输入的数据格式。
这里可以参考http://www.w3school.com.cn/php/php_ref_filter.asp
这是一套很好Filter函数,我们可以教育程序员,你就把你表单里的值封装成严格的数据格式匹配入库,从输入就杜绝XSS,举个例子,你表单里只让你填EMAIL格式的字符串,什么时候允许让你进< >’ “这样的字符了。
3.一个XSS出现在网站应用不同的地方代表着不同的风险等级。
比如XSS漏洞出现的地方到底存不存在身份认证,黑客是不是真正可以偷你的COOKIE,伪造会话?XSS漏洞出现的地方业务重不重要?程序员对于报上来的XSS漏洞是很不屑的,你就一个一个数,一个一个挖吧,我们很可怜做苦力的。当然XSS并不能以网站业务的重要性直接就给它定性,但我们至少可以排一个优先级。
最后想说的是我举的这三个例子想说明的是程序员的安全意识很重要,任你牛B哄哄,花拳绣腿,XSS漏洞在程序员的眼里只有输入和输出。我的说法只代表一家之说,欢迎讨论。
说的好,其实XSS抓的就是编程人员的大意,不认真就要付出代价,对待每一组程序都要认真