ActionScript3注入JavaScript脚本
JavaScript and VBScript Injection in ActionScript 3主要内容摘抄
脚本注入在这里是说在ActionScript3编程时更好的组织和使用JavaScript,不是黑客攻击做的那个。通过ActionScript3的ExternalInterface类完成,需要了解JavaScript和文档对象模型( DOM )。
简介
比如说现在用ActionScript3通过socket取数据,然后以JavaScript写到页面上去(我不想用FLEX组件了),这时会用很多现成js组件库,还有自己写的js组件扩展,如何更好的管理它们呢?
通过ActionScript3注入脚本提供以下好处:
服务器独立:JavaScript编译到SWF文件里了,相对于使用了一个swf,它要用的js文件在另一台服务器上,升级等一些事情会省心。
脚本代码保密 :JavaScript存储在SWF内,不像通常那样直接被看到源代。
透明 :通过适当的编写,只在用到时注入,不用时回收,节约资源。匿名运行,不会影响已有js, 除非你想。
运行脚本的修改 :脚本就像字符串参数一样,在运行时根据具体需求改变。
压缩 :JavaScripts可利用SWF压缩:例如一个32K的JavaScript文件时,存储在SWF里只有5K 。
对于需要Flash/的Flex与JavaScript交互的用户,这是一个不错的解决方案。
AS3脚本注入基础,这是一些常见用法:
ExternalInterface.call("alert", "foo")
ExternalInterface.call("alert('foo')")
ExternalInterface.call("function(){alert('foo'); alert('bar');}")
var js:String = "function(){function myFunc(str){alert(str);};myFunc(Foobar);}";
ExternalInterface.call(js)
原来我以为http://code.google.com/p/flex-iframe/这外开源项目用的已经很好了。
还有更好的:用XML在AS3中嵌入JavaScript
import flash.external.ExternalInterface;
var myJavaScript:XML =
<script>
<![CDATA[
function(){
var Foobar = 'foo';
function myFunc(str){
alert(str);
};
myFunc(Foobar);
}
]]>
</script>
ExternalInterface.call(myJavaScript); 这样写JS漂亮多了。
下面是一些更深入的研究,我没试过,从原文抄来的。
import flash.external.ExternalInterface;
var myJavaScript:XML=
<script>
<![CDATA[
function(){
// 本地变量
var myLocal = 'foo';
// 全局变量
myGlobal = 'bar';
}
]]>
</script>;
因为“var”被省略,myGlobal变成全局的,可以改变网页上js文件里写的一些变量值了。
import flash.external.ExternalInterface;
var myJavaScript :XML =
<script>
<![CDATA[
function(){
// 命名的本地函数,不保存
function myLocalFunction(){
alert('foo');
}
// 匿名的本地函数,不保存
var myOtherLocalFunction = function(){
alert('bar');
}
// 全局函数,可能会覆盖原有函数
myGlobalFunction = function(){
alert('Yo global dude!');
}
}
]]>
</script>
方法和变量效果一样,下面两者结合的例子:
import flash.external.ExternalInterface;
var myJavaScript :XML =
<script>
<![CDATA[
function(){
var snafu = 'You said';
// "Dojo"是被其它脚本创建的全局对象,
// 确认它存在再赋值,避免抛出异常.
// myVar和myFunction会存在对象 "Dojo"中,直到明确摧毁。
if(Dojo){
Dojo.myVar = 'foo';
Dojo.myFunction = function (str) {
alert(snafu + ":" + str);
}
};
}
]]>
</script>
ExternalInterface.call(myJavaScript);
这个XML定义函数被销毁,它保存的变量还在,是一种维护状态的方法,但是要小心内存泄漏和覆盖另一个脚本。
我们增加了一个新的全局方法,ExternalInterface.call(" Dojo.myFunction","你好") ,将获得一个警告框说: "You said:你好。"
发送参数和返回值:
import flash.external.ExternalInterface;
var myJavaScript :XML =
<script>
<![CDATA[
function(myFoo){
function myFunc (str){
return str.toUpperCase()
};
var anonResult = myFunc(myFoo);
return anonResult;
}
]]>
</script>
var myResult = ExternalInterface.call(myJavaScript , "foobar");
// myResult is "FOOBAR"
就到这了,如果你关心VBScript,请看原文。
分享到:
相关推荐
JavaScript 和 ActionScript 是两种在 Web 开发中广泛使用的脚本语言,它们分别在浏览器环境(JavaScript)和 Adobe Flash 平台(ActionScript)上运行。虽然它们语法上有许多相似之处,但它们的应用场景和交互方式...
ActionScript是一种基于ECMAScript(JavaScript的标准化版本)的编程语言,主要被应用于Adobe Flash平台,用于创建交互式内容、富互联网应用(RIA)以及动画。在标题"ActionScript"中,我们可以理解这是关于这个编程...
ActionScript是SWF文件中执行逻辑的关键,它是基于ECMAScript的一个方言,类似于JavaScript。通过使用“avi6,swf注入工具”,开发者可以编辑ActionScript代码,从而改变SWF文件的动态行为,例如增加交互性、改进...
AS3(ActionScript 3)和JavaScript是两种广泛用于网页开发的编程语言,它们各自有着不同的应用场景和优势。在Web开发中,有时需要在Flash内容(由AS3编写)和HTML页面(通常包含JavaScript)之间进行交互,以实现更...
AS3(ActionScript 3)是Adobe Flash平台上的编程语言,用于实现动态内容和交互性;PHP是一种服务器端脚本语言,常用于处理网页中的数据和逻辑;而MySQL则是常用的开源关系型数据库管理系统,用于存储和管理用户留言...
5. **安全性**:在处理用户输入时,ASP需要进行数据验证和过滤,防止SQL注入、跨站脚本攻击等安全问题。 6. **响应式设计**:考虑到不同设备的兼容性,Flash和ASP的结合可能需要考虑响应式设计,确保论坛在不同屏幕...
XSS 攻击使用到的技术主要为 HTML 和 Javascript,也包括 VBScript 和 ActionScript 等。XSS 攻击对 WEB 服务器虽无直接危害,但是它借助网站进行传播,使网站的使用用户受到攻击,导致网站用户帐号被窃取,从而对...
总之,超酷Flash留言板是一个集成了ActionScript编程、服务器端脚本、数据库管理和用户界面设计的综合项目,它体现了早期Web开发中Flash技术的独特魅力。尽管现代Web开发更倾向于使用HTML5、JavaScript和CSS,但回顾...
在IT行业中,Flash曾是一种广泛用于创建交互式和动态网页内容的工具,它可以通过ActionScript 3(AS3)编程语言来实现丰富的用户界面和动画效果。PHP则是一种流行的服务器端脚本语言,常用于处理网页后端逻辑,如与...
- 允许ActionScript与JavaScript通信,如果滥用,攻击者可以执行任意JavaScript。 4. 防治措施 为了防止Flash XSS漏洞,开发者应采取以下措施: - 对所有用户输入进行严格的验证和过滤。 - 使用安全的编程模式,...
1. **ActionScript基础**:ActionScript是基于ECMAScript的,与JavaScript类似,但更专注于富互联网应用(RIA)。在Flash中,ActionScript可以用来创建动态内容,如动画、按钮和文本效果。 2. **创建滚动列表**:...
- **基于DOM的XSS**:当网页中的DOM(Document Object Model)不受服务器控制,攻击者可以通过修改DOM结构注入恶意脚本。解决方法包括避免在客户端对DOM进行敏感操作,并对用户输入进行过滤。 - **非持久性XSS**:...
3. **处理数据库操作**:在ASP中,你可以使用SQL INSERT、UPDATE、DELETE或SELECT语句来执行数据操作。确保正确处理SQL注入等安全问题。 4. **返回响应数据**:ASP将操作结果封装成XML或JSON格式,并通过Response...
4. **安全考虑**:跨域通信时需注意安全问题,如CORS(跨源资源共享)设置,以及防止恶意脚本注入。本地连接也要确保只接受可信的连接请求。 5. **错误处理**:在双方都要处理可能的通信错误,如连接失败、数据解析...
在实际开发中,这样的上传方案需要考虑安全性问题,如防止跨站脚本攻击(XSS)和文件注入。同时,由于Flash已经不再被支持,现在更多地会使用HTML5的File API和Web Workers,它们提供了原生的多文件上传和大文件分块...
在描述中提到的"as"部分,很可能指的是ActionScript,这是Flash编程使用的语言,它基于ECMAScript(JavaScript的标准化版本)。ActionScript用于控制Flash对象,如摄像头和麦克风,以及处理用户的输入。开发者可以...
同时,由于Flash已逐渐被淘汰,现代的Web开发更多地转向HTML5、CSS3和JavaScript等技术,因此了解这些技术的更新替代方案也是必要的。尽管如此,对于仍在使用Flash的项目,理解Flash与ASP的结合仍然是一个有价值的...
6. **安全和优化**:在实现这种功能时,务必注意用户输入的安全性,防止跨站脚本攻击(XSS)和邮件注入。使用预处理语句、过滤或转义用户输入,确保数据的安全传输。同时,考虑到性能,可以考虑使用异步处理邮件发送...
- Flash源码公开可能会带来安全风险,如代码注入、跨站脚本攻击等。因此,源码的安全性优化是必须的。 8. **性能优化**: - 通过优化ActionScript代码,减少不必要的计算和内存占用,提高播放器的性能和响应速度...
这包括防止恶意脚本注入、保护用户信息不被泄露,以及实施适当的访问控制策略。 7. **优化与性能**:由于Flash聊天室需要处理大量实时数据,优化性能至关重要。这包括合理使用内存、避免不必要的计算以及确保网络...