使用java语言编写一个检测图片base64是否包含木马字符eval、$_POST、<?php等字符的工具类
时间: 2024-01-24 16:05:25 浏览: 132
可以参考以下的Java代码实现:
```
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Base64Checker {
private static final String BASE64_PATTERN = "^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$";
private static final Pattern MALICIOUS_PATTERN = Pattern.compile("(eval|\\$_POST|<\\?php)");
public static boolean hasMaliciousContent(String base64Str) {
if (!Pattern.matches(BASE64_PATTERN, base64Str)) {
return false;
}
byte[] decodedBytes = java.util.Base64.getDecoder().decode(base64Str);
String decodedStr = new String(decodedBytes);
Matcher matcher = MALICIOUS_PATTERN.matcher(decodedStr);
return matcher.find();
}
}
```
使用示例:
```
String base64Str = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA\n" +
"AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO\n" +
"9TXL0Y4OHwAAAABJRU5ErkJggg==";
boolean hasMaliciousContent = Base64Checker.hasMaliciousContent(base64Str);
System.out.println(hasMaliciousContent); // false
```
该工具类首先会使用正则表达式判断输入的字符串是否符合base64编码的格式,如果不符合则直接返回false;如果符合,则将其解码为原始字符串,并使用正则表达式检测是否包含eval、$_POST、<?php等恶意字符,如果包含则返回true,否则返回false。
阅读全文