Java服务器字符串解释执行是怎么样呢?
在有些编程语言中,输入字符串中可以插入特殊的函数,欺骗服务器使其执行额外的、多余的动作。下面的Perl代码就是一个例子:
$data = "mail body";
system("/usr/sbin/sendmail -t $1
class="Example" />
从表面上看,这些代码只允许用户访问example Bean的名字。
然而,了解该系统的用户可以访问“http://whereever。com/example。jsp?name=Fred&password=hack”这种URL。这个URL既改变name属性,也改变password密码属性。
当然,这应该不是页面编写者的意图,作者的意图是设计一个只允许用户访问名字属性的页面。 因此,在使用时应该非常小心。字符串被解释执行的问题可能在允许嵌入脚本代码的任何环境中出现。
例如,这类问题可能在Xalan(也称为LotusXSL)中出现,当然这是指系统设置不严格、易受攻击的情况下。
Xalan的脚本支持能够关闭(而且这是Xalan的默认设置),在敏感的应用中关闭脚本支持是一种明智的选择。
当你需要用DOM处理XML文档时还必须考虑到另外一点:DOM保证所有文本都经过正确的转义处理,防止非法的标记插入到脚本之内。LotusXSL缺乏这个功能,但这绝不是一个BUG。
支持脚本是LotusXSL的一个特色,而且它(明智地)默认处于关闭状态。XSL的W3C规范并没有规定支持脚本的能力。 现在我们来看看字符串解释执行如何影响SQL和JDBC。
假设我们要以用户名字和密码为条件搜索数据库中的用户,Listing 5的Servlet代码看起来不错,但事实上它却是危险的。
[展开]
你们公司是WINDOWS域环境吗,如果是的话,你在网上邻居里应该能看到...