A.NET优化:Sql注入和Html注入的黑帽SEO.(2)_.NET概论及软件使用_龙虎鹰师网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

A.NET优化:Sql注入和Html注入的黑帽SEO.(2)

作者:龙虎鹰师网安ASP维护基地 来源:龙虎鹰师网安ASP维护基地 浏览次数:0

本篇关键词:注入优化 链接
龙虎鹰师网安网讯:       最后,我们对所有的“恶意单词”进行替换:using System;using System.Text.RegularExpressions;/// <summary>/// Sanitize contains functionality to remove unaccepted tags or a...

       最后我们对所有的“恶意单词”进行替换:

using System;
using System.Text.RegularExpressions;

/// <summary>
/// Sanitize contains functionality to remove unaccepted tags or attributes
/// </summary>
public static class Sanitize
{
  // list of accepted/harmeless tags (in lower case)
  private static string[] allowedTags =    
    { "p", "h1", "b", "i", "a", "ul", "li", "pre", "hr", "blockquote", "img" };

  // list of attributes that need to be sanitized
  private static string badAttributes =
    "onerror|onmousemove|onmouseout|onmouseover|" +
     "onkeypress|onkeydown|onkeyup|javascript:";

  // sanitizes the HTML code in $inputHTML
  public static string FixTags(string inputHtml)
  {
    // define the match evaluator
    // MatchEvaluator 是一个委托它调用fixTag方法
    MatchEvaluator fixThisLink = new MatchEvaluator(Sanitize.fixTag);

    // process each tags in the input string
    string fixedHtml = Regex.Replace(inputHtml,         //需要替换的字符串
                                     "(<.*?>)",         //正则表达式:注意“?”的使用   --贪婪模式
                                     fixThisLink,       //委托“实例”做参数
                                     RegexOptions.IgnoreCase);
    //整句代码的意思就是:将输入字符串inputHtml中能匹配上"(<.*?>)"的部分(也就是被<  >包裹的标签)用fixThisLink方法进行处理

    // return the "fixed" input string
    return fixedHtml;
  }

  // remove tag if is not in the list of allowed tags
  private static string fixTag(Match tagMatch)
  {
    string tag = tagMatch.Value;

    // extrag the tag name, such as "a" or "h1"
    Match m = Regex.Match(tag,
                          @"</?(?<tagName>[^\s/]*)[>\s/]",      
                          RegexOptions.IgnoreCase);
    string tagName = m.Groups["tagName"].Value.ToLower();

    // if the tag isn't in the list of allowed tags, it should be removed
    if (Array.IndexOf(allowedTags, tagName) < 0)
    {
      return "";
    }

    // remove bad attributes from the tag
    string fixedTag = Regex.Replace(tag,
                        "(" + Sanitize.badAttributes + @")(\s*)(?==)",    // 注意"?=="的意思  --正向预查
                        "SANITIZED", RegexOptions.IgnoreCase);

    // return the altered tag
    return fixedTag;
  }
}


注意代码中两处正则表达式的高级用法,贪婪模式和正向预查,详细可参考贪婪模式和正向预查

这里我们就可以看到正则表达式说起到的强大作用——操作字符串的无上利器

2. 除了注入攻击,另一种必须使用的技术是nofollow因为Google的链接价值算法,我们都希望能有高价值的链接能指向我们的网站,以提高我们网站的等级。一种简单的方式就是到其他网站(如新浪)申请一个博客,然后在博客里添加一条链接,指向自己的网站即可。但如果我们自己是新浪,我们当然不愿意有其他人这样做(毕竟我们不知道其他人链接指向的网站究竟是好是坏,如果是一个垃圾网站,会牵连到我们自己的)。但是呢,我们也不愿意完全禁止掉链接的使用(比如简单的对链接进行编码,让链接失去作用),因为毕竟很多链接或许只是内部链接,而且一个能直接点击的链接能带来更好的用户体验。

为了解决这个问题,Google给出了一个方法,在链接中加上关键字nofollow,如下所示:

<a rel=“nofollow” href=“http://too.much.spam”>cool link</a>

这样,链接能直接点击,但不会带来链接价值——即Google不会认为你认可或推荐了该链接指向的网站。看看博客园有没有这样做,……,呵呵,好像没有,很大度哟。不过据说Google也会逐步降低链接价值的作用,谣言了,随他去吧……

    龙虎鹰师网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-14034-1.html
网站维护教程更新时间:2012-03-30 05:24:49  【打印此页】  【关闭
全站连接N点 | 龙虎鹰师网安 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。龙虎鹰师网安服务器维护基地招商进行中!请QQ:29769479

footer  footer  互联网安全  footer