URL和URI

  • URI:Uniform Resource Identifier,唯一标识一个网络资源
  • URL:Uniform Resource Locator,指向网络资源地址

URL是URI的子集,只有提供了访问机制(http:// or ftp://)的URI才是URL。

通常URL是绝对路径,URI可以是相对或绝对路径。

趣解url和uri;

URL标准格式:scheme://host[:port#]/path/.../[;url-params][?query-string][#anchor]

scheme //有我们很熟悉的http、https、ftp以及著名的ed2k,迅雷的thunder等。
host //HTTP服务器的IP地址或者域名
port# //HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如tomcat的默认端口是8080 http://localhost:8080/
path //访问资源的路径
url-params //所带参数
query-string //发送给http服务器的数据
anchor //锚点定位  

在 URL详解 中,文中安利了一种解析URL各部分的方法,以备不时之需,赞!

转义处理

URL中特殊符号对应的十六进制编码

+:URL 中+号表示空格, %2B
空格:URL中的空格可以用+号或者编码, %20
/:分隔目录和子目录, %2F
?:分隔实际的URL和参数, %3F
%:指定特殊字符, %25
#:表示书签, %23
&:URL中指定的参数间的分隔符, %26
=:URL中指定参数的值, %3D

利用.Net中提供的 QueryString 方法,可以获取指定参数的值

HttpRequest.Request.QueryString["foo"]

该方法会将被转义的字符还原成原字符。

关于HtmlEncoe

将html源文件中不容许出现的字符进行编码,通常是编码以下字符:"<"、">"、"&"、"""、"'"等。

注意,Server、HttpServerUtility实体类、HttpUtility三者的HtmlEncode方法本质一样。

网址编码

JavaScript中编码方法

  • escape:不建议使用
  • encodeURI:用于对网址编码,但不包含参数,不对冒号(:)、斜杠(/)编码
  • encodeURIComponent:用于对URI中(指定)的参数编码,对空格,井号(#),斜线(/),冒号(:)都编码
// encodeURI
http://www.cnblogs.com/a file with spaces.html"
http://www.cnblogs.com/a%20file%20with%20spaces.html // encodeURIComponent
http://www.cnblogs.com/?key="+encodeURIComponent(param)+"&page=1
http://www.cnblogs.com/?key=%E5%8D%9A%E5%AE%A2%E5%9B%AD&page=1

.Net中编码方法

  • Server.UrlEncode,HttpUtility.UrlEncode:不推荐,因为会对冒号(:)和斜杠(/)编码
  • Uri.EscapeUriString:用于对网址编码,但不包含参数,不对井号(#)、冒号(:)、斜杠(/)编码,类似JavaScript中的encodeURI方法
  • Uri.EscapeDataString:用于对URI中(指定)的参数编码,对冒号(:)、斜杠(/)、空格、井号(#)都编码,类似JavaScript中的encodeURIComponent方法

具体参见:从此不再惧怕URI编码:JavaScript及C# URI编码详解

Request.UrlReferrer

获取客户端上次请求的url的有关信息,具体参见:C# Request获取url

此处,给出几个应该注意的问题

  • 点击刷新按钮不会改变Request.UrlReferre,页面回发后会改变Request.UrlReferrer将其指向当前页面
  • “上一次”的url可能不存在(比如,直接地址栏输入当前页面链接),使用前需进行null判断
  • 上一页使用document.location方法或在Page_Load事件中Response.Redirect/Server.Transfer方式导航到当前页面,Request.UrlReferrer返回空值
  • 使用<a href>跳转,Request.UrlReferrer正常取值

https://blog.csdn.net/zhangzhentao/article/details/999029;window.showModalDialog()问题;

Fiddler

抓包工具,web代理服务器形式

  • 截获、重发、编辑、转存(查看不同终端上送的UserAgent信息)
  • 流量检测

将 Wi-Fi设置代理为本地的 ip和 port,port同 fiddler设置一样的。

具体参见:Fiddler工具介绍;Fiddler抓包总结;Fiddler学习;

UserAgent

前面提及到 UserAgent,借此了解下

只读字符串,格式:navigator.userAgent = navigator.appCodeName/navigator.appVersion

身份验证,用于服务器识别客户端操作系统、浏览器版本等,UA字符串在每次浏览器HTTP请求时发送到服务器,传递APP的基础环境信息。

项目中遇到的一个UserAgent示例如下,当时的场景问题可参见:https://www.cnblogs.com/wjcx-sqh/p/9643047.html

MPBank/6.5.0 Android/8.0.0 AID/unNw0BpDFADZBxNmufXsIsSiuic= SID/aYIt8Og76a17J9SnAM2B1H5Vm2A= APPTag/1.0(N;1234)
"WeChat/7.0.0":APP版本
"Android/10.1":操作系统版本
"AID/3Cjzry0cxDdUGE5C5D2YjawFFcM=":APPID的映射值,只要不卸载APP不会发生变化
"SID/5u9IBC0FmjV1yn8L9HAdae+/EoA=":APP一次启动的SessionID,APP进程不退出不会再变化,重新启动会改变
"APPTag/1.0(N;1234)":APPTag用于特定业务标识,1.0表示该字段版本号,一般不变化;N表示当前APP风格为通用版,V表示为尊享版,具体页面根据N或V切换为相应风格;1234目前无意义
"WebView/WKWebView":iPhone客户端特有标识,表示当前使用的浏览器是WKWebView

不同客户端浏览器的UserAgent参数不尽相同,可参见:浏览器userAgent

探测UserAgent

  • Fiddler抓包
  • chrome://version/
  • F12 --> network -->  name -->Headers

其他工具

Paros

Web应用漏洞评估工具

  • HTTP会话分析:拦截+修改
  • 网络爬虫
  • 漏洞扫描

A Java based HTTP/HTTPS proxy for assessing web application vulnerability.

具体参见官网,仅供参考。

Postman

参见:Postman | 果冻想;

IP攻击

场景

  • 一段时间内ip连接数大于一定值则断开该ip所有连接,且拒绝ip一定时间内连接
  • 一段时间内ip连接所发送的数据大于一定值则断开该ip所有连接,且拒绝ip一定时间内连接

参考:DoS攻击、CC攻击的攻击方式和防御方法;

IIS

查看日志

路径:C:\inetpub\logs\LogFiles\

至于是在哪个 W3SVC 文件夹下,通过 站点右键 - 管理网站 - 高级设置 - ID

IIS管道托管模式

分为经典模式和集成模式。

在集成模式中,HTTP模块和HTTP处理程序不再定义于 <system.web> 中,而是定义于 <system.webServer> 中。

基本问题解决

提示:无法访问此网站 localhost 拒绝了我们的连接请求。

可能原因:一般是默认网站状态没打开

解决:IIS-网站--Default Web site--重新启动

WebApi程序调用DB2问题

[HttpException (0x80004005):未能加载文件或程序集“IBM.Data.DB2”或它的某一个依赖项。试图加载格式不正确的程序。]
at System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12672788
at System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12512141

原因分析:操作系统64位,但发布的程序引用了一些32位的ddl,出现了兼容性的问题

解决方案:IIS → 应用程序池 → 对应的程序池 → 高级设置 → 启用32位应用程序 :true

"ExceptionMessage": "SQL1159  Initialization error with DB2 .NET Data Provider,
reason code 10, tokens 0.0.0, 9.7.9, Process Owner: IIS APPPOOL\\WebApi"

错误原因:用户无访问DB2权限。解决方案:

  • Step1:控制面板-管理工具-计算机管理-本地用户和组-组-IIS_IUSERS、DB2ADMNS、DB2USERS,在这三个组中分别添加应用程序池应用程序的名称
  • Step2:以管理员权限重启IIS(注:重启应用程序池无用):以管理员权限打开cmd,执行iisreset命令

URL - Fiddler - IIS的更多相关文章

  1. 无法在web服务器上启动调试。打开的URL的IIS辅助进程当前没有运行。

    调试时弹出:无法在web服务器上启动调试.打开的URL的IIS辅助进程当前没有运行.

  2. Url Rewrite IIS 配置

    在configuration节点下 <system.webServer> <rewrite> <rules> <rule name="rD" ...

  3. IIS URL Rewrite – Installation and Use

    IIS URL Rewrite – Installation and Use Posted by Nick LeFevre | Leave a reply IIS URL Rewrite Instal ...

  4. IIS URL Rewriting and ASP.NET Routing

    IIS URL Rewriting and ASP.NET Routing With the release of the URL Rewrite Module for IIS and the inc ...

  5. 整合iis+tomcat

    目的: 将 Tomcat与 IIS整合在一起,共用 80端口.让 iis可以解析 *.asp. *.aspx. *.jsp. servlet和 *.do文件: 第一步:准备工作. 在你的 Tomcat ...

  6. Url重写和伪静态

    这里是URL重写的精华:http://msdn.microsoft.com/zh-cn/library/ms972974.aspx感觉写的非常棒. 其实URL重写操作起来也是挺简单的,只要你在前台写好 ...

  7. fix iis Running slow

    为什么写这个文章.因为我现在再找一个站点的访问原因..方法还是老方法.. 1. 站点是否真的挂了 a. 基本上全挂.所有请求非常缓慢或超时. b.大多数请求慢,但最终还是执行了.有可能 队列再排队 怎 ...

  8. 使用wfastcgi在IIS上部署Python Flask应用

    本文介绍了如何在Windows上部署Python Flask应用,相关环境如下: 操作系统:windows 7 Python:3.4 WFastCGI: 2.2 应用所用到的包版本如下: Flask= ...

  9. URL重写2.1.mis

    概观 IIS URL重写2.1使Web管理员能够创建强大的规则来实现更容易让用户记住的网址,并使搜索引擎更容易找到.通过使用规则模板,重写映射,.NET提供程序和集成到IIS管理器中的其他功能,Web ...

随机推荐

  1. Django之model.form创建select标签

    前言 之前我们学习了form表单验证用户输入格式和自动创建HTML,那么如果用户创建select标签时怎么办呢,先来看下这个东西: models.py 数据格式: class UserInfo(mod ...

  2. LeetCode_104. Maximum Depth of Binary Tree

    104. Maximum Depth of Binary Tree Easy Given a binary tree, find its maximum depth. The maximum dept ...

  3. [c++]C++关键字之friend

    re 1. C++关键字之friend; end 希望大家能把自己的所学和他人一起分享,不要去鄙视别人索取时的贪婪,因为最应该被鄙视的是不肯分享时的吝啬.---GOOD---

  4. springboot-mybatis-pagehelper(分页插件)

    依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://m ...

  5. AWS 云产品 CloudFront + ELB + EC2 + S3 构建虚拟主机动+静分离站点

    目录 一.架构图 二.实现步骤 2.1.EC2 配置 2.2.ELB 设置 2.2.1.创建目标组 2.2.2.创建负载均衡器 2.3.S3 设置 2.4.CloudFront 分配 2.4.1.创建 ...

  6. Android_7.1.1_r6源码下载

    作为一名Android工程师,阅读Android源代码也是一门基本功,前段时间由于公司开发需要,便下载编译了Android_7.1.1_r6的源代码.在Windows下貌似是无法编译源代码的,为了以后 ...

  7. 机器学习第二节_pandas_数据操作

    今天打个卡, 还不错,学到20课了, 简单的把pandas的操作过一遍, 这没有numpy学的好 1. 读取csv文件 import pandasfood_info = pandas.read_csv ...

  8. Chrome 浏览器光标定位到地址栏

    Windows: Ctrl + L 或 Alt + D Mac: Command + L Linux: Ctrl + L

  9. Servlet技术——request、respone详解

    Servlet之request.respone详解 Request (一) 概述 request是Servlet.service()方法的一个参数,在客户端发出每个请求时,服务器都会创建一个reque ...

  10. 车牌识别代码OpenCV

    #include<opencv2\opencv.hpp> #include<iostream> using namespace cv; using namespace std; ...