文档章节

美化URL,提高安全性

丶宾利
 丶宾利
发布于 2014/08/16 16:09
字数 864
阅读 19
收藏 0

urlrewrite顾名思义,就是对URL进行重写,用户得到的全部都是经过处理后的URL地址,这样做我觉得好处有三:
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息

使用urlrewrite的步骤如下:

首页,访问其官网:http://tuckey.org/urlrewrite/,我下载的是最新的目前还处于Beta版的urlrewritefilter-3.2.0,下载后将其中的urlrewrite-3.2.0.jar扔到需使用此功能项目的lib目录中去
其次,在web.xml中加入如下配置:
<filter>
        <filter-name>UrlRewriteFilter</filter-name>
        <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
        <init-param>
            <param-name>logLevel</param-name>
            <param-value>WARN</param-value>
     </init-param>
    </filter>
    <filter-mapping>
        <filter-name>UrlRewriteFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

其实,urlrewrite其实就是个过虑器,它将会过虑用户的所有请求,符合规则的便对其进行重定向,具体的配置参数的使用方法见官方文 档:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2 /index.html
配置好web.xml后将下载的urlrewritefilter-3.2.0中的urlrewrite.xml配置文件放在WEB-INF目录下,这样在使用urlrewritefilter时它便自动到该目录下读取相关的配置了,我配置了个简单的,代码如下:
<rule>
<from>/zh_CN/NewsInfo/NEWS_([0-9]+)</from>
<to>/zh_CN/NewsInfo/view.do?method=view&id=$1</to>
</rule>
   
<outbound-rule>
<from>/zh_CN/NewsInfo.do\?method=view&id=([0-9]+)$</from>
<to>/zh_CN/NewsInfo/NEWS_$1</to>
</outbound-rule>

rule结点中form的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转,具体配置可见官网文档。
outbound-rule结点是服务器解析后的页面URL对外表现的形式,配置与上面的大体相同,如我一新闻链接代码在JSP中书写的形式如下:

<c:url var="news_url" value="/zh_CN/Press/view.do?method=view&id=${cur.id}&msg=Press" />
<li>&middot; <a href="${news_url}" mce_href="${news_url}" target="_blank" title="${cur.titleSub}">${cur.title}</a></
li>

经服务器解析后,最终显示在页面中的将变成:

<li>&middot; <a href="/项目名/zh_CN/NewsInfo/NEWS_9999" mce_href="项目名/zh_CN/NewsInfo/NEWS_9999" target="_blank" title="${cur.titleSub}">新闻标题</a></li>

当用户点击此链接后urlrewrite便用通过rule的配置重跳转到真正的访问地址,这样便很好的隐藏了真实地址
这其中有点是需要注意的,引用官网中的一段话:
Using the example above JSP's with the code
<a href="<%= response.encodeURL("/world.jsp?country=usa&amp;city=nyc") %>">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Or JSTL
<a href="<c:url value="/world.jsp?country=${country}&amp;city=${city}" />">nyc</a>
will output
<a href="/world/usa/nyc">nyc</a>

Note, If you are using JSTL (ie, <c:url) this will work also.
意思就是说需要转化的链接不能直接写在a标签中,需要写在c:url或其他服务器需要解析的变量中,这样才能对其重新显示

本文转载自:http://blog.csdn.net/liuzhen917/article/details/8524008

丶宾利
粉丝 0
博文 7
码字总数 561
作品 0
无锡
私信 提问
Urlrewritefilter使用说明

一、Urlrewritefilter说明及优势 Urlrewritefilter,通过java的Filter过滤器对URL进行重写,用户得到的全部都是经过处理后的URL地址,本质上通过伪地址进行页面跳转,隐藏真实地址,达到掩人...

凯文加内特
2015/04/13
169
0
Redox 0.4.1 发布,可用性有显著变化

redox 0.4.1发布,可用性有显著变化。Redox 是一个用 Rust 语言编写的类 UNIX 操作系统 , 它的目标是把 Rust 语言的创新带入到一个现代的微内核和全系列的应用程序。 下载地址 redox_0.4.1....

h4cd
2018/04/02
2K
5
ThinkCMF V1.1.3 发布,支持 PHP5.2+

ThinkCMF V1.1.3发布啦 ThinkCMF V1.1.3和上周发的ThinkCMFX1.2功能完全一样,但完全基于ThinkPHP3.1.3,支持PHP5.2+,用虚拟主机和空间的用户不用担心了! V1.1.3 ·统一Member应用为User,...

ThinkCMF
2014/11/18
2.8K
9
CDN 边缘规则,三秒部署、支持定制、即时生效,多种规则覆盖常用业务场景

2017年的最后一周,又拍云进行了一次重要升级,将自定义 Rewrite 升级为“边缘规则”。互联网应用场景的日益多样化,简单、方便、快速的根据不同应用场景实现不同的功能变得越来越重要。边缘...

又拍云
2018/01/09
0
0
微社区 startbbs v1.1.4 版发布

StartBBS(起点开源社区系统)是一个基于 PHP+MySQL MVC架构开发的新型微社区系统,她轻量小巧, 简单易用,强大高效,又简称 ”STB(烧饼)”。 前台 UI 采用当前流行的 Bootstrap 和 jQuery...

startbbs
2013/12/17
3.8K
15

没有更多内容

加载失败,请刷新页面

加载更多

PostgreSQL 11.3 locking

rudi
今天
5
0
Mybatis Plus sql注入器

一、继承AbstractMethod /** * @author beth * @data 2019-10-23 20:39 */public class DeleteAllMethod extends AbstractMethod { @Override public MappedStatement injectMap......

一个yuanbeth
今天
10
1
一次写shell脚本的经历记录——特殊字符惹的祸

本文首发于微信公众号“我的小碗汤”,扫码文末二维码即可关注,欢迎一起交流! redis在容器化的过程中,涉及到纵向扩pod实例cpu、内存以及redis实例的maxmemory值,statefulset管理的pod需要...

码农实战
今天
4
0
为什么阿里巴巴Java开发手册中不建议在循环体中使用+进行字符串拼接?

之前在阅读《阿里巴巴Java开发手册》时,发现有一条是关于循环体中字符串拼接的建议,具体内容如下: 那么我们首先来用例子来看看在循环体中用 + 或者用 StringBuilder 进行字符串拼接的效率...

武培轩
今天
8
0
队列-链式(c/c++实现)

队列是在线性表功能稍作修改形成的,在生活中排队是不能插队的吧,先排队先得到对待,慢来得排在最后面,这样来就形成了”先进先出“的队列。作用就是通过伟大的程序员来实现算法解决现实生活...

白客C
今天
81
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部