ورود

View Full Version : سوال: مخفی کردن پسوند صفحات jsp



manoto1371
پنج شنبه 27 آذر 1393, 12:07 عصر
سلام دوستان
من برای مخفی کردن پسوند صفحات jsp چه کاری می توانم انجام دهم؟
من از دستور زیر در web.xml استفاده کردم.
اما هنوزم وقتی testing.jsp رو میزنم در url میاره. چیکار کنم دیگه اینو نیاره!؟

<servlet>
<servlet-name>myTest</servlet-name>
<jsp-file>/testing.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>myTest</servlet-name>
<url-pattern>/test</url-pattern>
</servlet-mapping>

ahmad.mo74
پنج شنبه 27 آذر 1393, 18:30 عصر
سلام، مپینگت درسته، یعنی چه تو url بزنی testing.jsp/... چه test/... جفتش به testing.jsp میره، حالا اگر میگی تو url ات بازم testing.jsp مینویسه احتمالا یه جایی حواست نبوده خودت به testing.jsp ریدایرکت کردی...

manoto1371
پنج شنبه 27 آذر 1393, 19:34 عصر
سلام، مپینگت درسته، یعنی چه تو url بزنی testing.jsp/... چه test/... جفتش به testing.jsp میره، حالا اگر میگی تو url ات بازم testing.jsp مینویسه احتمالا یه جایی حواست نبوده خودت به testing.jsp ریدایرکت کردی...
مرسی، نه منظورم بود که میخوام وقتی تو url میزنم testing.jsp اونو نیاره!
چطور میشه اینکارو کنم؟

ahmad.mo74
پنج شنبه 27 آذر 1393, 20:08 عصر
آهان، اونم راه داره، میتونی یه Filter بزاری که اینکارو برات بکنه. یعنی هر درخواستی اومد که jsp. توش داشت بره توی اون filter و اون url رو عوض کنه و ریدایرکت کنه به url ای که توش jsp. نداره.

یعنی مثلا دوتا صفحه jsp داریم one و two

web.xml :


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">


<servlet>
<servlet-name>one</servlet-name>
<jsp-file>/one.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>two</servlet-name>
<jsp-file>/two.jsp</jsp-file>
</servlet>


<servlet-mapping>
<servlet-name>two</servlet-name>
<url-pattern>/two</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>one</servlet-name>
<url-pattern>/one</url-pattern>
</servlet-mapping>


<filter>
<filter-name>JSPFilter</filter-name>
<filter-class>com.sample.filter.JSPFilter</filter-class>
</filter>


<filter-mapping>
<filter-name>JSPFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>


</web-app>


JSPFilter :


package com.sample.filter;


import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;


/**
* @author avb
*/
public class JSPFilter implements Filter {


@Override
public void init(FilterConfig filterConfig) throws ServletException {
}


@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
String requestURI = ((HttpServletRequest) servletRequest).getRequestURI();
if (requestURI.contains(".jsp")) {
requestURI = requestURI.substring(0, requestURI.lastIndexOf(".jsp"));
((HttpServletResponse) servletResponse).sendRedirect(requestURI);
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
}


@Override
public void destroy() {
}


}


این همون کاریو میکنه که میخوای، فقط حواست باشه اینطوری برای همه فایل های jsp باید مپینگشو بنویسی، اگر بخوای filter فقط روی اونایی که خودت میخوای عمل کنه :


<filter-mapping>
<filter-name>JSPFilter</filter-name>
<url-pattern>/one.jsp</url-pattern>
<url-pattern>/two.jsp</url-pattern>
</filter-mapping>


در ضمن من ضرورتی به این کار نمیبینم، یعنی همون url های مجازی که براشون مپ کردی کافیه
سعی کن تا جایی که ممکنه از filter استفاده نکنی!

manoto1371
پنج شنبه 27 آذر 1393, 21:26 عصر
مرسی
اما اینکار از لحاظ امنیتی خوب نیست؟
اینکه ندونن با چه پسوندی هستند صفحات!؟
حالا اینکه url های مجازی رو هم ایجاد نکنم باز هم مشکلی نیست ؟

ahmad.mo74
پنج شنبه 27 آذر 1393, 22:06 عصر
ممنون

چرا از لحاظ امنیتی خوب باشه؟؟؟:متفکر:

نه دیگه برای اینکه jsp. رو بخوای حذف کنی باید url جایگزین براش تعریف کنی.

manoto1371
پنج شنبه 27 آذر 1393, 23:34 عصر
فکر کنم برای هکرها یسری مشکلاتی ایجاد میکنه!

ahmad.mo74
جمعه 28 آذر 1393, 09:56 صبح
چه مشکلاتی؟ میشه بیشتر توضیح بدی؟