• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

动态调用动态语言,第 2 部分: 在运行时寻找、执行和修改脚本

发布: 2008-6-30 14:55 | 作者: 不详 | 来源: 测试时代编辑整理 | 查看: 74次 | 进入软件测试论坛讨论

领测软件测试网

如果您当过 Web CGI 脚本程序员,那么一定知道必须注意传递给 ScriptEngine 的 eval() 方法的东西。脚本引擎会立即执行传递给 eval 方法的代码。因此,绝不要把来自不可信来源的字符串或 Reader 对象传递给脚本引擎。

例如,假设我们使用脚本编程 API 远程监视一个 Web 应用程序。我们让脚本引擎能够访问关键的 Java 对象,这些对象提供 Web 应用程序的状态信息。还创建一个简单的 Web 页面,这个页面接受任意脚本表达式,它将这些表达式传递给脚本引擎进行计算并在 Web 页面上显示输出。这样就可以对正在运行的 Java 对象进行查询并执行对象上的方法,从而帮助判断应用程序的状态。

但是,在这种情况下,能够访问这个 Web 页面的任何人都可以执行任意脚本语句,可以访问任意共享 Java 对象。编程时的失误、错误的配置和安全漏洞会把机密信息泄露给未授权用户,或者让应用程序遭遇拒绝服务攻击(例如,攻击者可以执行与 System.exit 或 /bin/rm -fr / 等效的脚本语句)。与任何强大的工具一样,Java 脚本编程 API 要求您保持谨慎,注意安全。

进一步开拓的方向

本文主要关注让 Java 应用程序能够在运行时动态地读取并执行外部脚本,以及让脚本能够访问显式提供给它们的 Java 对象。Java 脚本编程 API 还提供了其他特性。例如:

可以使用脚本语言实现一个 Java 接口,然后像使用任何其他 Java 接口引用一样从 Java 代码调用脚本代码。
可以在脚本中实例化并使用 Java 对象,还可以让 Java 应用程序能够访问这些对象。
可以在装载动态脚本时进行预编译,这可以让以后的执行过程更快。
可以设置脚本使用的输入流和输出流,这样就很容易将文件用作脚本的控制台输入源,以及将脚本的控制台输出转发到文件或其他流。
可以设置位置参数,脚本可以将这些参数用作命令行参数。
 分享这篇文章……

 
  提交到 Digg 
 
  发布到 del.icio.us 
 
  提交到 Slashdot!  
   
 
Java 脚本编程 API 定义了脚本引擎可以选择实现的一些功能,所以并非所有脚本引擎都提供这些功能。在 参考资料 中可以找到关于这些特性和其他特性的读物和在线参考资料。

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网