PHP静态分析与跨站脚本检测(二)
2008-02-29 22:10
330 查看
今天继续昨天的话题,这次仍然是为了理解php解析过程而做得工作。这次是将ProgramConverter中对PHP文件解析产生的ParseTree显示出来,使用JTree。
当然ProgramConverter中没有返回ParseTree的方法,如果另外在Checker中重新解析一遍,毫无疑问是不划算的,因而改写ProgramConverter,添加几行代码就行了。然后再Checker中调用具体产生JTree的类,将这个ParseTree作为参数传进去,然后OK。
这里相比昨天的Draw,使用了JTabbedPane作为底层容器,分别承载DrawPanel和今天的ParseTreePanel,这些地方的改动就不写出来了。
下边列出将ParseTree转换为JTree的类文件:
package at.ac.tuwien.infosys.www.pixy;
import java.util.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import at.ac.tuwien.infosys.www.phpparser.*;
public class ParseTreePanel extends JPanel
...{
private ParseTree parseTree;
public ParseTreePanel(ParseTree parseTree)
...{
this.parseTree = parseTree;
this.add(new JTree(convert(this.parseTree.getRoot())),BorderLayout.CENTER);
}
public DefaultMutableTreeNode convert(ParseNode parseNode)
...{
String name = parseNode.getName();
if (parseNode.isToken())
...{
name += " : " + parseNode.getLineno();
}
DefaultMutableTreeNode dmtNode = new DefaultMutableTreeNode(name);
java.util.List<ParseNode> list = parseNode.getChildren();
for (ParseNode node : list)
...{
dmtNode.add(convert(node));
}
return dmtNode;
}
}
这些都是些表面文章,没有涉及到Pixy的内涵。
顺便提一句,这个PhpParser跟Pixy是同一个人做的。很佩服啊!
另外,今天看了下ASPA这个东西,将asp文件转换为php文件,本来是很神奇的东西,居然运行不了。但是我把AspParser.java重新编译一遍之后就可以运行了,否则会在引用的commons组件那里出点问题。不知道是否只有我是这样的。
当然ProgramConverter中没有返回ParseTree的方法,如果另外在Checker中重新解析一遍,毫无疑问是不划算的,因而改写ProgramConverter,添加几行代码就行了。然后再Checker中调用具体产生JTree的类,将这个ParseTree作为参数传进去,然后OK。
这里相比昨天的Draw,使用了JTabbedPane作为底层容器,分别承载DrawPanel和今天的ParseTreePanel,这些地方的改动就不写出来了。
下边列出将ParseTree转换为JTree的类文件:
package at.ac.tuwien.infosys.www.pixy;
import java.util.*;
import javax.swing.*;
import javax.swing.tree.*;
import java.awt.*;
import at.ac.tuwien.infosys.www.phpparser.*;
public class ParseTreePanel extends JPanel
...{
private ParseTree parseTree;
public ParseTreePanel(ParseTree parseTree)
...{
this.parseTree = parseTree;
this.add(new JTree(convert(this.parseTree.getRoot())),BorderLayout.CENTER);
}
public DefaultMutableTreeNode convert(ParseNode parseNode)
...{
String name = parseNode.getName();
if (parseNode.isToken())
...{
name += " : " + parseNode.getLineno();
}
DefaultMutableTreeNode dmtNode = new DefaultMutableTreeNode(name);
java.util.List<ParseNode> list = parseNode.getChildren();
for (ParseNode node : list)
...{
dmtNode.add(convert(node));
}
return dmtNode;
}
}
这些都是些表面文章,没有涉及到Pixy的内涵。
顺便提一句,这个PhpParser跟Pixy是同一个人做的。很佩服啊!
另外,今天看了下ASPA这个东西,将asp文件转换为php文件,本来是很神奇的东西,居然运行不了。但是我把AspParser.java重新编译一遍之后就可以运行了,否则会在引用的commons组件那里出点问题。不知道是否只有我是这样的。
相关文章推荐
- PHP静态分析与跨站脚本检测(四)
- PHP静态分析与跨站脚本检测(三)
- PHP静态分析与跨站脚本检测(一)
- php版https证书过期时间检测/并发送短信给相关技术人员(crontab定时脚本版)
- PHP imdb类多个跨站脚本漏洞
- 谈PHP生成静态页面分析 模板+缓存+写文件
- PHP脚本执行效率性能检测之WebGrind的使用
- 对抗静态分析——番外:文件操作检测
- nginx php-fpm中启用慢日志配置(用于检测执行较慢的PHP脚本)
- [李景山php] 深入理解PHP内核[读书笔记]--第二章:用户代码执行--PHP脚本的执行 词法分析和语法分析
- 微信wx sample.php脚本下载和分析,公众号官方开发脚本wx_sample.20140819下载
- WordPress organizer/page/users.php脚本多个跨站脚本漏洞
- PHP性能调优,PHP慢日志---PHP脚本执行效率性能检测之WebGrind的使用
- Python 脚本学习(三),日志分析脚本,文件差异对比,HTTP状态检测
- 检测压缩包并处理的Linux脚本(解压、批量修改文件名、导入)分析
- WordPress get_allowed_mime_types函数(wp-includes/functions.php)存在跨站脚本漏洞
- Xdebug文档(六) 分析PHP脚本
- DedeCMS 5.7 config.php 跨站脚本漏洞
- 分析CVE-2012-0158完善静态检测工具
- (ZZ)SQL注入分析(手动注入检测) and 手动注入脚本命令精华版 4000