编程开发 购物 网址 游戏 小说 歌词 地图 快照 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 开发 租车 短信 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
移动开发 架构设计 编程语言 互联网 开发经验 Web前端 开发总结
开发杂谈 系统运维 研发管理 数据库 云 计 算 Java开发
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
  编程开发知识库 -> 互联网 -> web安全之 -> 正文阅读
 

[互联网]web安全之[第1页]


最近在做一个项目,在做项目的过程中发现,由于自己的命名规范,显示在url地址栏中的信息如果不加修饰,很容易被人理解并且改写。如果让别人看不懂自己网站上的url地址栏的内容是不是非常好呢,于是自己便发时间去查找资料研究了一下,最后发现UrlRewrite很趁自己的心意。经过学习发现UrlRewrite有很多优点,第一,提高安全性,可以避免参数和id等完全暴露在用户面前。第二,美化URL。第三:由于网络爬虫特别喜欢静态网页,所以更有利于搜索引擎收入。
好讲到这里,我们来实现第一个小demo吧。
首先建立一个web项目,然后在web.xml里面加上这样一段代码,也就是配置过滤器(建议此过滤器放在所有servlet和过滤器的上面)

<!-- urlrewrite过滤器-->
<filter>
    <filter-name>UrlRewriteFilter</filter-name>
    <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>UrlRewriteFilter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>FORWARD</dispatcher>
</filter-mapping>
然后在web.xml的同级目录加一个urlrewrite.xml,因为默认是在这个目录找这个xml的,代码如下

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
"http://tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
    <rule>
    <!-- <from>中的地址表示我们浏览器要访问的地址 -->
        <from>^/news/news.html$</from>
     <!-- <to>中的内容表示浏览器访问了上述地址后,实际转向能真正访问系统的地址 -->
        <to>/news/news.jsp</to>
    </rule>
    
    <rule>
        <from>^/news/([0-9]+).html$</from>
        <to>/news/news.jsp?newsId=$1</to>
    </rule>
    
    <outbound-rule>
        <from>^/WebTest/news/news.jsp\?newsId=([0-9]+)$</from>
        <to>/WebTest/news/$1.html</to>
    </outbound-rule>
</urlrewrite>
然后是index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
    <ul>
        <li>新闻</li>
        <ul>
            <li><a href="${pageContext.request.contextPath}/news/news.html?newsId=news">新闻</a></li>
            <li><c:url value="/news/news.jsp?newsId=1" var="tempNewsUrl"></c:url>
                <a href="${tempNewsUrl}">新闻1</a></li>
            <li><c:url value="/news/news.jsp?newsId=2" var="tempNewsUrl"></c:url>
                <a href="${tempNewsUrl}">新闻2</a></li>
            <li><c:url value="/news/news.jsp?newsId=3" var="tempNewsUrl"></c:url>
                <a href="${tempNewsUrl}">新闻3</a></li>
        </ul>
    </ul>
</body>
</html>
 然后是news.jsp 这个jsp放在webContent的news文件夹下
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%Object newsId=request.getParameter("newsId"); %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>新闻</title>
</head>
<body>
本条新闻id为 :<%="news".equals(newsId.toString())?"空值,因为您访问的是静态页面news.html":newsId %>
</body>
</html>
这样写完后运行一下,将鼠标移到链接出就会出现这样的提示,说明已经成功了

点击后的url地址栏

解释原因
上面整个过程中,实现伪静态起关键作用的就是urlrewrite.xml的配置。
  先看<rule>标签中的配置:
  <from>中的地址表示我们浏览器要访问的地址(即敲回车前在地址栏输入的地址,或者<a>标签指向的连接),可以自己指定。<from>中的地址内,括号里的内容为正则表达式,用来过滤字符,比如 ^/news/([0-9]+).html$ 表示可以匹配/news目录下以任意位数字命名的.html文件,如news/1.html、news/1234.html等。主要用于过滤访问路径或传参。
  <to>中的内容表示浏览器访问了上述地址后,实际转向能真正访问系统的地址,这个地址需要是真是存在的(当然SpringMVC可以设置为Controller的地址,struts2可以设置为action的地址等),上面例子<to>标签指向的地址中的“$1”表示<from>标签中的第一处正则表达式所匹配的实际内容,利用这一特性,可以达到传参的效果。

<rule>标签所起到的作用就是:浏览器访问的是<from>中的地址,它把这个地址经过过滤转向访问<to>中地址,返回时再以静态地址的方式显示。
  但一般情况下,这些静态地址都不是我们手动输入到地址栏的,而是存在于网页中,由用户点击访问的,而且很多情况下<a>标签中的地址都会用动态地址如.jsp、.php等,这种情况下,就需要使用<outbound-rule>了。滑动一下鼠标再上去看一下<outbound-rule>的配置会发现,其中的<from><to>标签中的内容差不多与<rule>标签刚好相反。
  文章上面对”新闻1”链接的配置就是如此,<c:ur>中的地址本来是动态地址,经过与jstl的<c:ur>标签结合使用,给用户展现的就是一个静态地址了,相当于比直接访问静态页面多走了两步,urlrewrite.xml中具体执行顺序如下


${tempNewsUrl}中的链接指向<outbound-rule>标签<from>中的地址,继而通过各种转向,最终执行到真正的动态地址。
  温馨提示:一些特殊字符在<outbound-rule>中需要转义哦!比如“?”需要转义成“\?”,“&”需要转义成“&amp ;”……
最后要使用这个功能,别忘了到jar包到lib文件夹下哟
下载链接:http://pan.baidu.com/s/1csuZYu


  互联网 最新文章
Stanford 英文词性标注(Part-of-speech)缩
基于窗口的实时统计
求解矩阵最短路径问题
SSL握手通信详解及linux下c/c++ SSL Socket
关于服务器上(Docker中)运行Java程序时区
python爬虫系列(六):强大的beautifulsou
[计算机网络笔记]第四部分——网络层 选路算
11.28 北京,念腾讯暑假,不思则惘吧!
web安全之
滑块验证码识别 java版本
上一篇文章      下一篇文章      查看所有文章
加:2016-11-30 20:21:59  更:2016-11-30 20:22:48 
VC(MFC) Delphi VB C++(C语言) C++ Builder 其它开发语言 云计算 Java开发 .Net开发 IOS开发 Android开发 PHP语言 JavaScript
ASP语言 HTML(CSS) HTML5 Apache MSSQL数据库 Oracle数据库 PowerBuilder Informatica 其它数据库 硬件及嵌入式开发 Linux开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 租车
生肖星座 三丰软件 视频 开发 短信 中国文化 网文精选 搜图网 美图 阅读网 多播 租车 短信 看图 日历 万年历 2018年2日历
2018-2-26 1:33:56
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  编程开发知识库