您好,登錄后才能下訂單哦!
這篇文章給大家介紹jspxcms中怎樣使用jsp文件,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
系統(tǒng)中默認(rèn)禁止jsp的訪問。允許jsp訪問容易導(dǎo)致一些漏洞,最為常見的攻擊方式是通過上傳jsp文件獲取webshell。
在com.jspxcms.core.ShiroConfig中定義了對jsp jspx后綴的過濾。
@Bean public FilterRegistrationBean jspDispatcherFilterRegistrationBean() { FilterRegistrationBean filterRegistration = new FilterRegistrationBean(); filterRegistration.setFilter(new JspDispatcherFilter()); filterRegistration.setEnabled(true); filterRegistration.addInitParameter("prefix", "/jsp"); filterRegistration.addUrlPatterns("*.jsp"); filterRegistration.addUrlPatterns("*.jspx"); filterRegistration.setDispatcherTypes(DispatcherType.REQUEST); return filterRegistration; }
其中com.jspxcms.common.web.JspDispatcherFilter就是過濾器。
/** * 是否允許訪問 JSP 或 JSPX 文件。默認(rèn) false 。 */ private boolean allowed = false; /** * 請求轉(zhuǎn)發(fā)地址前綴。只允許特定目錄的 jsp(jspx) 允許被訪問。默認(rèn)為 /jsp 。比如訪問 /abc.jsp 通過請求轉(zhuǎn)發(fā)實(shí)際上訪問的文件為 /jsp/abc.jsp 。 */ private String prefix = "/jsp"; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (!allowed) { ((HttpServletResponse) response).sendError(HttpServletResponse.SC_FORBIDDEN, "JSP Access Denied"); return; } HttpServletRequest req = (HttpServletRequest) request; String uri = req.getRequestURI(); String ctx = req.getContextPath(); if (StringUtils.isNotBlank(ctx)) { uri = uri.substring(ctx.length()); } request.getRequestDispatcher(prefix + uri).forward(request, response); } public void init(FilterConfig filterConfig) throws ServletException { String allowed = filterConfig.getInitParameter("allowed"); if ("true".equals(allowed)) { this.allowed = true; } String prefix = filterConfig.getInitParameter("prefix"); if (StringUtils.isNotBlank(prefix)) { this.prefix = prefix; } }
在這個(gè)過濾器中默認(rèn)不允許任何jsp的直接訪問。但對于某些一定需要使用jsp的情況,預(yù)留了一個(gè)相對安全的訪問jsp的方法。就是所有的jsp請求,都轉(zhuǎn)發(fā)到/jsp目錄下,這防止了攻擊者將jsp文件上傳到uploads等目錄導(dǎo)致的攻擊。因?yàn)橹挥猩蟼鞯?jsp目錄的jsp文件才能被訪問。
可以修改JspDispatcherFilter的private boolean allowed = true;。然后將jsp文件放到/jsp目錄中。比如創(chuàng)建/jsp/abc.jsp文件,訪問路徑是/abc.jsp。
關(guān)于jspxcms中怎樣使用jsp文件就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。