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. 使用Apache,压力测试redisson的一般高并发

    安装 Linux linux直接yum -y install httpd-tools,然后ab -V测试 Windows 1查看80端口有没有被占用,netstat -ano | findstr &q ...

  2. SMOS数据产品介绍与下载方法

    1. SMOS数据介绍 The Soil Moisture and Ocean Salinity (SMOS) 卫星是欧空局发射的一颗以探测地球土壤水含量以及海表盐度为目标的卫星,卫星所搭载的唯一载荷 ...

  3. Egret入门学习日记 --- 第十五篇(书中 6.1~6.9节 内容)

    第十五篇(书中 6.1~6.9节 内容) 好的,昨天完成了第五章. 今天来看第六章. 总结重点: 1.如何对组件进行分组? 跟着做: 重点1:如何对组件进行分组? 首先,选中你想要组合的组件. 然后点 ...

  4. 谷歌插件:右键搜使用指南.md

    基本功能看插件,说几个自定义搜索的实现 自定义技巧:%s选择的文字或页面或链接,%g转换成GBK字符集,%t转换成BIG5字符集,%p剪贴板内容,%u当前页面域名. 注:这部分内容来自谷歌插件介绍.使 ...

  5. Rhino脚本引擎技术介绍

    引用:http://p.primeton.com/articles/54c1e255be20aa4735000001 http://blog.csdn.net/u013292493/article/d ...

  6. python for循环 - python基础入门(11)

    在python开发中,除了前篇文章介绍的while循环还有一个for循环也经常使用,两者使用都是大同小异,for循环的使用相对于while循环更加灵活,下面我们一起来了解下具体区别. 一.for 循环 ...

  7. Mui 沉浸模式以及状态栏颜色改变

    手机的顶部状态栏,也就是信号.电量那条,有4种状态,分别是正常.变色.透明(也称沉浸式状态栏).消失(也就是全屏).后3种特殊用法,具体见下: 这些都是真机运行不生效,需提交App云端打包后才生效: ...

  8. libevent实现TCP 服务端

    libevent实现Tcp Server基于bufferevent实现 /******************************************************** Copyri ...

  9. C++:标准模板库vector

    一:介绍 vector是C++标准模板库,是一个容器,底层是数组,为连续内存. 命名空间为std,所属头文件为<vector>   注意:不是<vector.h> vector ...

  10. 笔试2019-GRANDSTREAM

    程序阅读 随机,因为局部变量在栈中,值随机. 上面那个题在x86上都是12因为x86是大端模式 但是在ARM架构的处理器,因为它们是小端模式,则输出x078 判断回文 int hui(const ch ...