Jun 2, 2008

Tomcat-аас болж азаартсан нь

Би ер нь JAVA болон JSP дээр л програмаа бичдэг. Тэгээд үүнээсээ болоод TOMCAT-ийг л вэб сервер болгож ашгилдаг. Тэгсэн чинь саяхан tomcat маань серверийн IP-г муухай азаартуулдаг байна шдээ. Вэб серверээ би нэг дотоод IP болох A1.A2.A3.A4 гэж давиад түүн дээрээ Real IP болох B1.B2.B3.B4 гэсэн IP-г NAT хийгээд интернэтэд байршуулсан юм. Түүнчлэн DNS дээр CCCC.CC гэсэн домайн хаягийг B гэсэн IP руу зааж өгсөн. Гаднаас орж буй систем уул нь A гэсэн IP-г огт мэдэхгүй харин B гэсэн IP-аар л хандах учиртай шүүдээ. C гэсэн домайнаар хандахаар DNS нь B гэсэн IP-г л зааж өгнө.

Вэб браузераар хандаж байгаа үед энэхүү асуудал бидэнд учрахгүй. Харин элдэв HACKING TECHNOLOGY ашиглаж байгаа хүнд бол гаргаж ирээд байнлээ.

жишээ нь:

telnet cccc.cc 80 гэж ороод
HEAD / HTTP/1.0 эсвэл GET / HTTP/1.0
гээд үз
тэгхэд

HTTP/1.1 302 Moved Temporarily
Location: http://A1.A2.A3.A4/index.jsp
Content-Length: 0
Server: Apache-Coyote/1.1
Connection: close

гээд IP-г маань гаргаад ирэндээ. Өөрөөр хэлбэл http://A1.A2.A3.A4/index.jsp гээд A1.A2.A3.A4 IP маань гараад ирлээ.
Ингээд чи баригдав уу!!!


Энийг яаж сэргийлэх вэ?? За эхлээд гол асуудлаа бичье.

telnet www.yahoo.com 80
GET / HTTP/1.0
гээд үзээрэй. Энэ үед URL огт гарч ирэхгүйгээр www.yahoo.com-ийн үндсэн хуудасны HTML SOURCE код гараад ирнэ.

Яагаад минийхийг азаартуулж байж yahoo-г гаргаж ирэхгүй байна??

Вэб браузер дээр http://www.yahoo.com гээ
д үзья. Тэгсэн чинь хуудас маань зүгээр гарч ирч мөн URL нь http://www.yahoo.com/ гээд байна.
За тэгвэл http://cccc.cc/ гээд үзья. Тэгтэл index.jsp-д байгаа миний хийсэн хуудас маань гараад ирлээ. Харин URL дээр
http://cccc.cc/index.jsp болчихсон байна. Яагаад араас нь index.jsp -ийг залгаад байна.

HTTP/1.1 302 Moved Temporarily
Location: http://A1.A2.A3.A4/index.jsp

Content-Length: 0

Server: Apache-Coyote/1.1

Connection: close


Гээд гарч ирээд байгаа нь автоматаар
http://A1.A2.A3.A4/index.jsp гэсэн хаягруу REDIRECT хийгээд байгаа учраас л миний IP гарч ирээд байгаа юм байна. Энэ нь TOMCAT-ийн онцлог ч юм уу BUG ч юм уу.

Энэ асуудлыг өөрийнхөөрөө шийдсэн минь

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class homePage extends HttpServlet{

public void doGet(HttpServletRequest request,HttpServletResponse response)
throws IOException, ServletException{
response.sendRedirect("http://CCCC.CC/index.jsp");
}
}

гэсэн java servlet бичнэ.
Одоо бичсэн servlet ээ тухайн вэбийн web.xml -д зааж өгнө.

гэсэн бичлэг хийнэ.
Одоо харин хуучин гарж байсанаа дахиад үзье
telnet cccc.cc 80

GET
/ HTTP/1.0


HTTP/1.1 302 Moved Temporarily
Location: http://CCCC.CC/index.jsp

Content-Length: 0

Server: Apache-Coyote/1.1

Connection: close

гээд гараад ирлээ. Эврика болчихлоо.
Одоо яасан. Бас нэг асуудал гарлаа.
Би web.xml дээ servlet-н зааж өгөөгүй болхоор үндсэн / ээр нөгөө зураг (*.jpg, *.gif, etc) болон бусад файл маань гарж ирхээ больчихлоо одоо яах вэ?

:((

Санаа зоволтгүй.
web.xml дээ бүх хэргэлдэг файлын өргөтгөлөө tomcat-н ерөнхий web.xml-д заасан MIME ээр болгохоор заагаад л өгчих.

за одоо боллоо. Яг сайхан ажиллаж чадлаа.

Болойшдээ...

2 comments:

D.Enkhbat - Д.Энхбат said...

Taalagdlaa. Goyo bichij. Bas neg zuil delgeruulj helehed MIME gedeg ni tuhain content yamar turliig bolohiig zaaj ugdug yum. Jisheelvel bainga ashiglagdag turul bol Content-Type:text/html. Uuniig bur sain oilgoyo gevel http-giin get, post-iin talaar sudlah heregtei.

Anonymous said...

java servlet-n talaar medeelel ogooch.