15、安全的Web应用代码生成技术

安全的Web应用代码生成技术

1. 语言预处理器与ELET

在处理嵌入式代码时,实现语言预处理器将其转换为API调用大部分过程较为顺利。主要挑战在于处理语法上下文从HTML切换到JavaScript,或反之的情况。预处理器包含两个独立的解析单元,分别用于处理HTML和JavaScript。当遇到表示适用语言变化的HTML元素时,会选择相应的解析器,这些元素包括脚本标签的开闭,或携带JavaScript代码的HTML属性,如 onclick 等事件处理程序。

为了尽可能模拟字符串类型的特性,引入了简单的预处理器元语法,允许程序员将宿主值(如Java字符串)添加到嵌入式语法中,并组合/扩展ELET实例。还实现了迭代器API,可用于搜索ELET的数据字面量或拆分ELET实例。

示例代码如下:

HTMLElet h = "Hello <b> $data(name)</b>, nice to see you!";
2. 为J2EE添加HTML创建外部接口

为了组装最终的HTML输出,外部接口会遍历ELET的元素并将它们传递到输出缓冲区。为了确定性地避免XSS漏洞,所有遇到的数据字面量会根据其在HTML页面中的语法上下文进行不同方式的编码:
- HTML :使用HTML编码(“&…;”)对数据字面量中的元字符(如<、>、=、”或’)进行编码,防止注入恶意HTML标签或属性。
- JavaScript代码 <

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值