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/999029window.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. Web聊天室的实现

    Tornado普通方式实现聊天室 普通的http方式连接的话,基本思路是前端页面通过JS重复连接后端服务器. 核心文件:app.py #!/usr/bin/env python # -*- codin ...

  2. sonarqube-jenkins-config

    Sonar Config .Jenkinsfile config stage('SonarQube analysis') { steps { script { scannerHome = tool ' ...

  3. ADFS RelayState

    https://blogs.technet.microsoft.com/askds/2012/09/27/ad-fs-2-0-relaystate/ 什么是RelayState,我为什么要关心?有两种 ...

  4. MediaElement 不能显示的问题

    1.记得在窗体的 Load 事件里面调用 Player1.Play();方法,就可以在窗体加载后就直接播放视频 2.WPF MediaElement其实和Windows系统自带的播放器是一样的,因此W ...

  5. Docker storage driver(十四)

    目录 一.storage driver 作用 1.Images and layers 2.Container and layers Copy-on-Write 3.Data volumes and t ...

  6. 如何使用 AWS Auto Scaling 按需动态增加和减少实例

    目录 一.背景需求 二.配置步骤 2.1.创建 AMI 2.2.创建负载均衡目标组 2.3.创建 Classic Load Balancer 2.4.创建启动配置 2.5.创建 Auto Scalin ...

  7. python介绍,计算机组成。内存分布,进制,操作系统介绍

    学习小方法 ​三个W一个Hwwwh:what(是什么) why(为什么) where(怎么用) how(如何用) 来思考知识点多练,多写,多敲代码增加熟练度与代码量​ Python 是一门面向后台的编 ...

  8. Python----数据预处理代码实例

    为方便收藏学习,转载自:https://www.jb51.net/article/158168.htm 本文实例为大家分享了Python数据预处理的具体代码,供大家参考,具体内容如下 1.导入标准库 ...

  9. Echarts 图表的本地配置

    前言 Echarts是一个美观的可视化工具,但是很多朋友初次接触,不知道自己该怎么创建一个包含Echartst图表的本地HTML网页,本文将详细地介绍Echarts的使用流程. 使用流程步骤 共分为三 ...

  10. javascript判断碰撞检测

    javascript判断碰撞检测 点与矩形的碰撞检测 <pre> /** * * @param x1 点 * @param y1 点 * @param x2 矩形view x * @par ...