java访问共享文件夹,读取局域网中一台机器的共穗悔享目录中的文件,需要jcifs-1.1.11.jar的支持,使用SMB协议,以宴明下是实现了远程读取文件的功能代码:
package junitimport jcifs.smb.SmbFile
/**
* java访问局域网共享目录
*
* @author administrator
* @version 1.0 2015-7-6 猜祥正
*/
public class SmbTest {
public static void main(String[] args) throws Exception {
//smb://xxx:xxx@192.168.2.188/testIndex/
//xxx:xxx是共享机器的用户名密码
String url="smb://192.168.2.188/testIndex/"
SmbFile file = new SmbFile(url)
if(file.exists()){
SmbFile[] files = file.listFiles()
for(SmbFile f : files){
System.out.println(f.getName())
}
}
}
}
XML 指可扩展标记语言(EXtensible Markup Language),是一种标记语言,很类似 HTML。其设悉旅计宗旨是皮陆锋传输数据和存储数据。
DTD指文档类型定义(Document Type Definition),用于声明实体来定义变量(或是文字类的宏),以便在接下来的DTD或者XML文档中多次使用。
ENTITY实体:一般实体用来访问内部资源,而外部实体用来访问外部资源。在解析外部实体的过程中,XML的分析器支持众多网络协议和服务(DNS,FTP,HTTP,SMB等等),这取决于URLs的值。
XML在Java中分两种解析方式:
如上图实体 lol9 由 10 个 lol8 组成,由此类推,lol9 为 一亿 个 lol 组成。一个小于1K的XML能消耗3.5G内存。若 lol 定义的字符更长,或阶层更多,可瞬间使服务器宕机。
XML组件默认允许 XML 文档包含来自外部 URI 的数据,例如包含本地计算机或远程系统上的某个文件。当接受用户的输入作为文档的一部分动态构建XML时,防护不当可能导致:
XML支持用XPath查询语句,如: //users/user[loginID/text()=’user’ and password/text()=’pwd’] ,若未严格验证输入,就容易被注入攻击(类似SQL注入)。如: //users/user[loginID/text()='admin' and password/text()='' or 1=1 or ''='']
1、若在使用XML时, 无需使用内联文档类型声明,请禁止DTD ,可规避拒绝服务和外部实体注入攻击。
2、若 需要使用内联文档类型,请开启安全进程 ,可避免多层嵌套引起的拒绝服务攻击。
3、若 需要使用内联文档类型,还需要限制实体类型(需JDK7+) 。
4、若 需要使用XPath进燃晌行查询 ,请使用 ESAPI.encoder().encodeForXPath(xpath) 对用户输入进行转义。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)