MoonBit月兔编程语言 现代编程思想 第十一课 案例:语法解析器与Tagless Final 转化为抽象语法树 Division(Multiply(Add(Value(1), Value(5)), Value(7)), Value(2)) 计算最终结果:21 语法分析 对输⼊⽂本进⾏分析并确定其语法结构 通常包含词法分析和语法分析 本节课均利⽤语法解析器组合⼦(parser combinator)为例 2 词法分析 将输⼊分割为单词 输⼊:字符串/字节块 输出:单词流 例如: parse("-10123-+-523 103 ( 5) ) ")) 8. } 我们成功地分割了字符串 - 10123 - + - 523 103 ( 5 ) ) 但这不符合数学表达式的语法 13 语法分析 对单词流进⾏分析,判断是否符合语法 输⼊:单词流 输出:抽象语法树 1. expression = Value / "(" expression ")" 2. expression =/ "*" expression / expression "/" expression 1 + - 1 5 1 + (1 - 5) * - 5 1 5 (1 - 5) * 5 14 语法分析 语法定义 1. expression = Value / "(" expression ")" 2. expression =/ expression "+" expression / expression0 码力 | 25 页 | 400.29 KB | 1 年前3
WAF - 是时候跟正则表达式说再见from’, give me a hand。 基于语义检测的WAF 输入是否有效代码 执行了什么动作 动作是否有危害 抽象攻击语义 基于语义检测的WAF—实现 用户输入 词法分析 语法分析 攻击语义检测 攻击语义抽象 基于语义检测的WAF—优缺点 运营成本低 高准确率 优点|缺点 应急 响应慢 语义抽象 依赖人 低漏报 开发成本很高 算法优化 WAF运营手段 • WAF安全水位 • WAF瓶颈 • payload的变化 Part 3 如何构建未来的WAF 基于深度学习构建WAF 思路:用深度学习的模型代替语义检测中的词法分析、语法分析。 用户输入 深度学习的攻击 语义检测模型 在线检测 攻击语义的深 度学习网络 攻击语义的深度学习网络 "前缀闭合" "代码语句" "后缀闭合" 攻击语义 一般攻击语义0 码力 | 24 页 | 1.66 MB | 1 年前3
共 2 条
- 1













