当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > C#加密路径里的参数,保护参数隐私安全!

ASP.NET
合理的网盟广告策略:如何规划与投放网盟广告
GoDaddy Backorder域名抢注经验分享
Google Analytics获得GOOGLE真正的收录网站数据指标
Visual Studio 2008 Team Suite简体中文正式版- 激活方法

ASP.NET 中的 C#加密路径里的参数,保护参数隐私安全!


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 25 ::
收藏到网摘: n/a

写过论坛的朋友,特别是把路径放到数据里,然后在服务器端读取数据库里的字段,把路径信息动态的显示在客户端.

    如过直接以
http://xxxx.xxxx.net/ShowForum.aspx?id=2&rootID=0&userName=myUserName

    就会发现,直接把参数信息显示在Client端了.别有用心的人,可能会对你的服务器进行攻击

    如果在Client这样显示.
http://xxxx.xxxx.net/ShowForum.aspx?bdefEdGa=DEdscFDW&aHJdIDesk=esOddEsA&dsERsdwS=SdEEsaDY


下面我把这样实现的C#.net代码贴出,如大家要转载,请保留本人的版权。

/*
*Description:加密路径信息后,输出到Client端
*Auther:天很蓝_崇崇
*Email:[email protected]
*Dates:2005-01-18
*Copyright:ChongChong2008 YiChang HuBei China
*/

using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
using System.Configuration;

//导入自定义的类库
using _3Layer.DataLayer.DataCommon;
using _3Layer.DataLayer.DataCommon.DataAccess;
using Library.ClassLibrary.Crypt.DES;

namespace CHONGCHONG.XML
 public class RenderingXML : System.Web.UI.Page
 {
  /// <summary>
  /// 从数据库预生成XML数据源
  /// </summary>
  private void PreRenderXML()
  {
   string strSQL = "select语句略去........................;
   myDataLayer.Open();

   RenderingXml="<?xml version='1.0' encoding='gb2312'?>\r\n";
   RenderingXml+="<xml>\r\n";
   try
   {   
    System.Data.SqlClient.SqlDataReader myDR = (SqlDataReader)myDataLayer.ExecuteReader( strSQL );
    while(myDR.Read())
    {
     RenderingXml+="<TreeNode id='"+myDR["BoardID"]+"'>\r\n";
     RenderingXml+="<NodeText>"+myDR["BoardName"]+"</NodeText>\r\n";
     RenderingXml+="<title>"+myDR["Title"]+"</title>\r\n";
     RenderingXml+="<NodeUrl>"+EncodeHTML( EncodeParameter( myDR["Link"].ToString() ) )+"</NodeUrl>\r\n";
     RenderingXml+="<child>"+myDR["children"]+"</child>\r\n";
     RenderingXml+="<target>"+myDR["Target"]+"</target>\r\n";
     RenderingXml+="</TreeNode>\r\n";
    }
   }
   catch(System.Data.SqlClient.SqlException ee)
   {
    return ;
   }
   finally
   {
    myDataLayer.Close() ;  
   }
   RenderingXml+="</xml>";
   byte[] bytResult = Encoding.Default.GetBytes( RenderingXml ) ;
   Response.ContentType = "text/xml" ;
   Response.BinaryWrite( bytResult ) ;
  }


  /// <summary>
  /// Description:加密路径参数
  /// </summary>
  /// <param name="sourParameter"></param>
  /// <returns></returns>
  private string EncodeParameter( string sourParameter )
  {
   string startString = String.Empty ;
   string endString  = String.Empty ;  
   StringBuilder destParameter = new StringBuilder() ;

   if( sourParameter == null || sourParameter.Equals("") )
   {
    destParameter.Append( String.Empty ).ToString() ;