X-Pages:fileUpload控件,可防止上传不需要的文件

时间:2017-03-09 14:13:40

标签: xpages

我使用fileUpload控件中的accept属性仅允许某些文件类型并阻止上传.exe或其他可能有害的文件。

application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,application/pdf,text/plain,image/gif,image/jpeg,image/pjpeg,image/png"

这是有效的,但我使用的是一个名为Burp Suite的工具,它允许我截取一个可接受的文件,例如.txt,其中可能包含有害代码,并将文件扩展名更改为.exe,然后将其上传到X-Page数据库。

当我转到保存文档并在拦截并更改为.exe后,我添加了以下代码来标识exe文件: 我们可以操纵上传的内容并将文件扩展名更改为无害的.txt吗?

 var fileData:com.ibm.xsp.http.UploadedFile =facesContext.getExternalContext().getRequest().getParameterMap().get(getClientId('fileUpload1'));

if (fileData != null) {
    var tempFile:java.io.File = fileData.getServerFile();
    // Get the path
    var filePath:String = tempFile.getParentFile().getAbsolutePath();
    // Get file Name
    var fileName:String = tempFile.getParentFile().getName();
    // Get the Name of the file as it appeared on the client machine - the name on the server will NOT be the same
    var clientFileName:String = fileData.getClientFileName();

}
var fileRight = clientFileName.slice(-4);
if (fileRight == ".exe")
{   
//facesContext.getExternalContext().getRequest().getParameterMap().get(getClientId('fileUpload1').replace(".exe",".txt"))
//facesContext.getExternalContext().getRequest().getParameterMap().get(getClientId('fileUpload1').remove(".exe",0))
}

1 个答案:

答案 0 :(得分:0)

是的,你可以。您在控件的属性上有两个选项'使用上传文件的原始文件名'和'替换上传文件的文件名...',您可以在其中放置名称扩展名为'name.txt'。我没有尝试只更改扩展名......在替换代码中可能更好。

enter image description here