关闭

安全地使用HttpContext.Current

814人阅读 评论(0) 收藏 举报
分类:

<>

安全地使用HttpContext.Current

有时我们会写些通用类库给ASP.NET或者WindowsService程序来使用,例如异常记录的工具方法。 对于ASP.NET程序来说,我们肯定希望在异常发生时,能记录URL,表单值,Cookie等等数据,便于事后分析。 然而对于WindowsService这类程序来说,您肯定没想过要记录Cookie吧? 那么如何实现一个通用的功能呢?

方法其实也简单,就是要判断HttpContext.Current是否返回null,例如下面的示例代码:

public static void LogException(Exception ex)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("异常发生时间:").AppendLine(DateTime.Now.ToString());
    sb.AppendLine(ex.ToString());

    // 如果是ASP.NET程序,还需要记录URL,FORM, COOKIE之类的数据
    HttpContext context = HttpContext.Current;
    if( context != null ) {
        // 能运行到这里,就肯定是在处理ASP.NET请求,我们可以放心地访问Request的所有数据
        sb.AppendLine("Url:" + context.Request.RawUrl);

        // 还有记录什么数据,您自己来实现吧。
    }

    System.IO.File.AppendAllText("日志文件路径", sb.ToString());
}

就是一个判断,解决了所有问题,所以请忘记下面这类不安全的写法吧:

HttpContext.Current.Request.RawUrl;
HttpContext.Current.Server.MapPath("xxxxxx");

下面的方法才是安全的:

HttpContext context = HttpContext.Current;
if( context != null ) {
    // 在这里访问与请求有关的东西。
}

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

HttpContext.Current.Server.MapPath("") 未将对象设置到引用的实例异常。

System.Web.HttpContext.Current.Server.MapPath("/")  这个常用来表示网站的根目录,偶尔出现
  • yjlwl1213
  • yjlwl1213
  • 2014-06-11 11:12
  • 6797

ASP.NET多线程下使用HttpContext.Current为null解决方案

问题一:多线程下获取文件绝对路径   当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,...
  • a497785609
  • a497785609
  • 2015-01-22 15:23
  • 5440

线程调用方法 System.Web.HttpContext.Current.Server.MapPath()

在多线程里面使用HttpContext.Current,HttpContext.Current是得到null的.  所以在线程调用方法,方法中类里面的System.Web.HttpContext.C...
  • vaecnfeilong
  • vaecnfeilong
  • 2012-11-07 13:49
  • 2021

异步HttpContext.Current实现取值的方法

在一个项目中,为了系统执行效率更快,把一个经常用到的数据库表通过dataset放到Application中,发现在异步实现中每一次都会出现HttpContext.Current为null的异常,后来在...
  • neusoft06
  • neusoft06
  • 2014-12-16 14:36
  • 1234

(WCF初体验)WCF的认证和消息保护

最近做WCF开发,有个需求是在服务端做认证,网上查资料了解到可以用UserName和Password 来做认证,只需要写好配置文件和在服务端写好验证类就行了,但是网上普遍的博文都是需要用证书,而我自...
  • u010724686
  • u010724686
  • 2015-02-13 17:09
  • 2110

从零开始学WCF(14)WCF安全性概述

安全性概述 常见的安全威胁: 1) 观测网络流量以获取敏感信息。以在线银行为列,某个客户端请求将资金从一个账户转账到另一个账户。一个恶意用户截获了此消息(具有账号和密码),随后从盗用的账户将资金转出。...
  • Eric_K1m
  • Eric_K1m
  • 2013-11-01 15:01
  • 1769

WCF基于用户名和密码安全成功测试

经过多次测试,终于探出一种很合适我使用的WCF安全验证模式。     目标:  1.客户端与服务器端通信使用x509证书验证,但不用客户端安装证书。只需要服务器端配置好证书即可。  2.验证使...
  • anlun
  • anlun
  • 2015-04-04 22:52
  • 466

WCF使用安全证书验证消息加密

WCF使用安全证书验证消息加密
  • whl632359961
  • whl632359961
  • 2016-06-17 11:05
  • 1670

我对 WCF RESTful 身份验证的实现方式

RESTful   具体含义请去搜索 ,意味着我们的服务是无状态的,每次调用完全无关的 那么我们怎么保证身份验证呢? 一般这类服务都是提供给别人调用(一般是 第三方系统 ),或者叫做应用程序编程接口 ...
  • zlj002
  • zlj002
  • 2013-12-26 17:40
  • 1747

WCF之各种WCF引用方式

写在开头:本文内容来自 WCF全面解析中的一个经典例子,如果你已经看过了,那么可以忽略本文,本文旨在和大家分享不一样的WCF使用方法。 准备工作: 1.创建解决方案WCFService(当然名字可...
  • dyllove98
  • dyllove98
  • 2013-07-30 18:54
  • 13001
    个人资料
    • 访问:862520次
    • 积分:13116
    • 等级:
    • 排名:第1190名
    • 原创:472篇
    • 转载:26篇
    • 译文:2篇
    • 评论:76条
    最新评论