ASPNET优化Sql注入和Html注入的黑帽SEO
01
注入攻击,包括Sql注入和Html注入。我经常能看到对Sql注入防范的谈论,但对于Html注入 ,很多人并没有引起足够的重视。为了展示Html注入的效果,我们模仿了一个常见的留言本功能 。
首先,在页面声明中添加两个属性设置EnableEventValidation“false”
02
然后 ,前台页面和后台代码段分别如下:
03
程序很简单,将用户输入的内容再显示出来而已。运行代码,然后输入我们的恶意代码 ,提交。
04
我们会发现页面自动跳转到http//toomuchspam/页面!这就是所谓的“Html注入” 。当page页面render到客户端后,浏览器会按一个普通的html页面进行解析;当解析到上面的js代码时……
为了避免这种入侵,在aspnet中 ,我们最简单的处理方式就是对输入的内容进行“Html编码 ”。将后台代码改为:
05
现在我们再运行代码,发现源代码被原样输出显示在页面,并没有运行。为什么呢?查看输出页面的源代码:
ltpgtSanitizing ltimg srcquotquotINVALIDIMAGEquot onerrorlocationhrefquothttp//toomuchspam/quotgtlt/pgt
整理后 ,我们发现如下的映射转换:
< lt less than
> gt greater than
quot quota
所以js无法执行 ,但在页面显示时,我们确能看到“原汁原味”的js内容 。
但问题并没有结束,现实世界中 ,输入的内容除了恶意代码以外,还可能有如下的内容:
06
我们希望显示蓝色的文字,但经过编码后 ,显然无法达到我们的效果。为此,我们还需要进行更精确的过滤。这也是为什么之前我们要设置EnableEventValidation“false” ValidateRequest“false ”的现实原因 。
其实我最先想到的方案是:首先对整个内容进行编码,然后把我们允许使用的html标签再替换回来。这样是相当保险的 ,但是在具体的操作中,遇到了很多问题,这个郁闷啊(如果有谁有这种实现的实现代码 ,千万要拿出来大家分享一下呀)。
我先介绍另一种方案:
首先要取出标签,如,、和
标签里的属性: 属性的值: 07 最后,我们对所有的“恶意单词”进行替换: using System using SystemTextRegularExpressions /// /// Sanitize contains functionality to remove unaccepted tags or attributes /// 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 onerroronmousemoveonmouseoutonmouseover onkeypressonkeydownonkeyupjavascript // sanitizes the HTML code in inputHTML public static string FixTagsstring inputHtml // define the match evaluator // MatchEvaluator 是一个委托 ,它调用fixTag方法 MatchEvaluator fixThisLink new MatchEvaluatorSanitizefixTag // process each tags in the input string string fixedHtml RegexReplaceinputHtml //需要替换的字符串 <> //正则表达式:注意“ ”的使用 贪婪模式 fixThisLink //委托“实例”做参数 RegexOptionsIgnoreCase //整句代码的意思就是:将输入字符串inputHtml中能匹配上<>的部分(也就是被< >包裹的标签)用fixThisLink方法进行处理 // return the fixed input string return fixedHtml // remove tag if is not in the list of allowed tags private static string fixTagMatch tagMatch string tag tagMatchValue // extrag the tag name such as a or h1 Match m RegexMatchtag RegexOptionsIgnoreCase string tagName mGroupstagNameValueToLower // if the tag isnt in the list of allowed tags it should be removed if ArrayIndexOfallowedTags tagName < 0 return // remove bad attributes from the tag string fixedTag RegexReplacetag SanitizebadAttributes \s // 注意的意思 正向预查 SANITIZED RegexOptionsIgnoreCase // return the altered tag return fixedTag 注意代码中两处正则表达式的高级用法,贪婪模式和正向预查 ,详细可参考贪婪模式和正向预查 这里我们就可以看到正则表达式说起到的强大作用——操作字符串的无上利器啊! 08 除了注入攻击,另一种必须使用的技术是nofollow。因为Google的链接价值算法,我们都希望能有高价值的链接能指向我们的网站 ,以提高我们网站的等级。一种简单的方式就是到其他网站(如新浪)申请一个博客,然后在博客里添加一条链接,指向自己的网站即可 。但如果我们自己是新浪 ,我们当然不愿意有其他人这样做(毕竟我们不知道其他人链接指向的网站究竟是好是坏,如果是一个垃圾网站,会牵连到我们自己的)。但是呢 ,我们也不愿意完全禁止掉链接的使用(比如简单的对链接进行编码,让链接失去作用),因为毕竟很多链接或许只是内部链接,而且一个能直接点击的链接能带来更好的用户体验。 为了解决这个问题 ,Google给出了一个方法,在链接中加上关键字nofollow,如下所示: 这样 ,链接能直接点击,但不会带来链接价值——即Google不会认为你认可或推荐了该链接指向的网站 。看看博客园有没有这样做,…… ,呵呵,好像没有,很大度哟。不过据说Google也会逐步降低链接价值的作用 ,谣言了,随他去吧…… 09 就直接上代码了: using System using SystemTextRegularExpressions /// /// NoFollow contains the functionality to add relnofollow to unstusted links /// public static class NoFollow // the white list of domains in lower case private static string whitelist seoasp wwwseoeggheadcom wwwcristiandariero // finds all the links in the input string and processes them using fixLink public static string FixLinksstring input // define the match evaluator MatchEvaluator fixThisLink new MatchEvaluatorNoFollowfixLink // fix the links in the input string string fixedInput RegexReplaceinput fixThisLink RegexOptionsIgnoreCase // return the fixed input string return fixedInput // receives a Regex match that contains a link such as // and adds refnofollow if needed private static string fixLinkMatch linkMatch // retrieve the link from the received Match string singleLink linkMatchValue // if the link already has relnofollow return it back as it is if RegexIsMatchsingleLink rel\s\snofollow RegexOptionsIgnoreCase return singleLink // use a named group to extract the URL from the link Match m RegexMatchsingleLink href\s\s RegexOptionsIgnoreCase string url mGroupsurlValue // if URL doesnt contain http// assume its a local link if urlContainshttp// return singleLink // extract the host name such as wwwcristiandariero from the URL Uri uri new Uriurl string host uriHostToLower // if the host is in the whitelist dont alter it if ArrayIndexOfwhitelist host > 0 return singleLink // if the URL already has a rel attribute change its value to nofollow string newLink RegexReplacesingleLink anofollowd RegexOptionsIgnoreCase // if the string had a rel attribute that we changed return the new link if newLink singleLink return newLink // if we reached this point we need to add relnofollow to our link newLink RegexReplacesingleLink RegexOptionsIgnoreCase return newLink End 1 、标题和描述要完善 我遇到太多网站没有写标题和描述就上线推广了,很多企业没有seo人员 ,不知道关键词和描述对于网站优化的重要性,一般建站公司或者技术人员会写一个简单的标题,有的甚至不会写描述的标签。如果网站的标题和描述都不完善,那么想要获取好的排名很难了 。 如何快速写出好的标题和描述呢 标题的写法: 我们都知道在百度的搜索结果中 ,只能出现网页标题、描述、网址,其中,标题和描述是最重要的 ,好的标题和描述会大大的提升点击率。 一般我们的标题写法是主关键词相关关键词品牌词。 也可以主关键词营销短语品牌词 。 实在不会的站长可以参考你同行网站的写法,简单讲就是你的用户搜索什么词,把这个关键词写进标题就好了。注意:标题控制在80个字符以内。 描述的写法: 描述是对当前网页的简单描述 ,首页一般会介绍公司的业务 、宣传短语、联系电话等信息,语句通顺即可,我建议新手朋友可以多参考百度排名前两页同行网站描述的写法 。注意:描述一般不超过200个字符。 2、网站内容的丰富 很多人认为网站建好以后就可以上线了 ,而我的建议是新网站在上线前,最好给网站填充一些内容,如果人员充足可以多写一些原创的文章 ,待上线后,保持一定的更新频率。 如何快速更新网站原创内容 网站内容是一个网站灵魂和基础,毕竟用户来网站要么是需要某种服务的,要么是想找到某个问题的答案和信息的 ,而我们大部分的网站都是在满足第二点,所以,解决用户需求就是我们网站价值的体现。 整理用户关注的关键词搜索词 我们可以从多种渠道获取这些关键词 ,比如竞争对手的关键词词库 、百度推广的关键词工具、各种的挖词工具等等 。 根据这些关键词,去针对性的写文章吧。通过时间的积累 ,我们的网站内容会满足大量用户的搜索需求。 开通专栏 现在是自媒体时代,大量的自媒体人需要曝光,如果我们能够在前期给予一定的好处 ,相信可以为网站带来一批自媒体人士的 。当然,这一点需要一点策略,相信是难不倒你的。 3、验证百度站长平台 为什么我要你验证百度站长平台呢因为这是我们唯一一个渠道可以和百度亲密接触的地方 ,在百度站长平台,我们可以提交网站的数据,还可以看到百度对于网站的抓取情况。百度站长平台的出现,的确让seo人员的工作更加便捷和有据可循了 。 SEO现在已经逐渐退化了 ,因为百度改版已经开始屏蔽这个了,现在很多网站已经很难优化上去了,现在很多网络公司已经不靠这个吃饭了 ,现在狠人很少,做的话也很贵,而且很麻烦 移动网站怎么做seo优化,优化技巧有哪些? 1 、移动建站的域名选择 移动建站选择域名的标准,应尽量选择简单、容易记的域名 2、移动SEO优化关键词的选择 因移动与PC端的显示媒介不同 ,所以在选择目标关键词时会有差异移动网站布局关键词时,择优布局核心关键词的搜索下拉词/相关搜索词作为关键词 3 、移动网站的内容建设策略 用移动设备联网的用户更注重内容的时效、互动性。像新闻、赛事、事件等时下流行的信息,都是移动用户关注的重点如何吸引用户眼球上下功夫 ,网站的内容需要联系当下热点时实更新,需要有与用户相关的某种情感价值,才有可能持续得到用户的关注。 1 、移动网站要保持高度简洁 因网速及流量不可控制的因素,移动设备访问网页相比PC端会慢得多 。因此 ,移动端建站应尽可能的将页面数和页面大小控制到最低。 2、外链建设对移动SEO的影响 PC端网站的外链种类非常丰富,比如BTB、新闻 、友情链接等。但移动端目前并没有外链这个概念,有部分手机网站也放置了一些友情链接 。 3、 移动网站的其它优化注意事项 移动网站其它的优化注意事项与PC端网站SEO类似,网站要采用合理的扁平式树形结构,有清晰的导航。首页、频道页 、内容页要合理布局关键词 ,合理安排内链和外链,做好权重的转移。 4、移动建站时做好与PC网站之间的转换 在移动端建设新网站时,确保在移动网站与PC端网站的页面之间 ,有相应的导航及提示链接,一则方便用户在手机与PC端切换,再者也便于搜索引擎收录移动端的新网站 是关于火锅的网站 ,刚建立,怎么做SEO? 注:以下seo优化是本人实战经验,并不表示完全正确。警告:合理优化网站才能获得更好的排名 。 一、网站前期准备 网站主题定位 确定网站的三个核心关键词 注册一个你喜欢但必须包含关键词的域名 全面收集 、了解网站所涉及行业的一切相关的产品资料 尽量多的整合挖掘出相关的长尾关键词,分配好相关权重并制作记录表格。 二、竞争对手的分析 竞争对手的域名:包括域名的长度和域名的组成成分 ,以及域名的网站权重和域名的注册时间。 分析竞争对手网站的规模:百度与谷歌等搜索引擎对网站页面的收录,网站的快照时间,以及网站友情链接数量 ,网站导入链接与站内链接数量 。 分析竞争对手网站站内布局结构:分析对手网站的各个标签写法,网站关键词的安排来了解竞争对手的针对反向以及分析对手站内栏目的安排了解竞争对手的技术实力。 主页链接的安排:分析对手主页链接的安排,链接安排的个数越多也就意味着对手网站的权重越高。 对手网站页面文章的形式了解怎样的文章内容和页面形式的安排比较受用户欢迎 。 三、站内优化方案 谨慎确定好网站标题title 关键词keywords 描述description 网站采用树形结构,美观大方,导航简洁清晰 ,色彩搭配合理,利于增加客户体验,站内尽量少用flash ,视频等,以防影响网速,也不利于蜘蛛的抓取。 如需使用图片应加入ALT标签,flash ,视频等应加以文字说明。 制作好301重定向 、站点地图、404页面的设置 。 网站大体设置好后就进行网站栏目内容的整理,添加,以原创为主 ,伪原创为辅,减少转载,禁用采集。 而且内容要有相关性 ,加锚文本是应注意事项:要用绝对URL,利用关键词做锚文本,在文章开头第一次出现就要加锚文本 ,文章中,文章结尾都应该加上锚文本,但不能过度优化。锚文本的增加要循序渐进 。 四、站外优化方案 做和自己网站信息主题周边相关的网站的外部链接。 做和自己网站的内容相似 ,就像双胞胎一样,但是还是有区别的外部链接。尤其是对于分词来说是有区别的,但是关键词的密度分配,词语分配相似。 不做和网站的内容完全不匹配的外部链接 。 不做不输出权重的外部链接。 选择高权重的网站。 五、日常维护与个人能力的提升 利用站长工具每天监控自己的友情链接状态 ,顺便帮友情方看看是否丢失友情链接,是否互相交换友情链接的时候有的网站被降权,甚至被K 。 监控自己的外链的增加和减少 ,检验自己布置外链的成效,整合自己布置外链的资料,以方便对以后有针对的提高效率。 每天更新网站增加文章 ,所以必须要检查网站所做的页面是否收录,收录状态如何。 像分析自己网站一样分析竞争对手,我们才能准确的调整日常工作的力度 ,这样才有机会超过竞争对手,所以监控竞争对手不能忽视 。做到知己知彼,才能百战不殆。 因为在初期时整理资料的时候有忽视的环节 ,通过在分析竞争对手的同时会得到很大的启发,经常得到意想不到的收获,那就是资源的发现。 初期的时候网站可能对产品知识只是了解个大概,在不断的操作中我们会遇到很多这样那样的问题 ,只有不断的学习网站产品的知识,我们才能把产品知识学到位,只有专业的产品知识我们才能够不断的写出对读者有益的文章 。 这个也是关系到我们网站规模扩展的问题所在 ,所以必须每天花时间来研究产品知识,补充自己的知识含量。 每天看看网站主题相关的新闻,只有关注大的趋势 ,我们才能逐步的在这个行业成熟,才能逐步的走上正轨。 网站收录推送站长工具https://www.seogurublog.com/seotool网站开始制作到上线做SEO的步骤有哪些
SEOSEM的发展前景如何?
移动网站怎么做seo优化?
新站SEO怎么优化?不要抄袭