本文目录一览:
- 1、asp网站如何防止XSS攻击
- 2、请前辈给我列举历届世界杯主题曲,谢谢
- 3、如何防范XSS跨站脚本攻击测试篇
- 4、关于ASP网站XSS漏洞,请帮忙过滤一下,谢谢
- 5、跨站脚本攻击有哪些类型
- 6、asp项目中如何防止xss攻击
asp网站如何防止XSS攻击
asp中防止xss攻击的方法如下:
确保所有输出内容都经过 HTML 编码。
禁止用户提供的文本进入任何 HTML 元素属性字符串。
根据 msdn.microsoft.com/library/3yekbd5b 中的概述,检查 Request.Browser,以阻止应用程序使用 Internet Explorer 6。
了解控件的行为以及其输出是否经过 HTML 编码。如果未经过 HTML 编码,则对进入控件的数据进行编码。
使用 Microsoft 防跨站点脚本库 (AntiXSS) 并将其设置为您的默认 HTML 编码器。
在将 HTML 数据保存到数据库之前,使用 AntiXSS Sanitizer 对象(该库是一个单独的下载文件,将在下文中介绍)调用 GetSafeHtml 或 GetSafeHtmlFragment;不要在保存数据之前对数据进行编码。
对于 Web 窗体,不要在网页中设置 EnableRequestValidation=false。遗憾的是,Web 上的大多数用户组文章都建议在出现错误时禁用该设置。该设置的存在是有原因的,例如,如果向服务器发送回“X”之类的字符组合,该设置将阻止请求。如果您的控件将 HTML 发送回服务器并收到图 5 所示的错误,那么理想情况下,您应该在将数据发布到服务器之前对数据进行编码。这是 WYSIWYG 控件的常见情形,现今的大多数版本都会在将其 HTML 数据发布回服务器之前对该数据进行正确编码。
对于 ASP.NET MVC 3 应用程序,当您需要将 HTML 发布回模型时,不要使用 ValidateInput(false) 来关闭请求验证。只需向模型属性中添加 [AllowHtml] 即可,如下所示:
public class BlogEntry
{
public int UserId {get;set;}
[AllowHtml]
public string BlogText {get;set;}
}
请前辈给我列举历届世界杯主题曲,谢谢
历届世界杯主题曲1986~2006
1986
别样的英雄“A Special Kind of Hero
mms://media.chinabroadcast.cn/chi/sports/sq060307003.wma
演唱者:斯黛芬妮.劳伦斯(Stephanie Lawrence)
1986年的世界杯是属于马拉多纳的,这位阿根廷天皇巨星以“上帝之手”和连过五人的长途奔袭进球得分,闻名于世,并为本队再次夺得世界杯桂冠。这首充满传统色彩的大气歌曲后来一直被视为颂扬马拉多纳的赞歌,究其原因是它曾出现在那届世界杯赛官方影片《英雄》的结尾,而画面恰恰是马拉多纳在球场上英武拼杀的慢动作镜头。此歌演唱者是著名的舞台剧演员斯黛芬妮-劳伦斯,但该曲是否为当届主题曲,还鲜有明证。
斯黛芬妮.劳伦斯
出生于英国的音乐家庭,父母从事音乐和舞蹈。她因在伦敦一些最著名的音乐剧中出演而知名。16岁登上舞台后,不久去百老汇发展,也在电影和电视中客串角色。自1981年接任安德鲁-韦伯的名剧《埃薇塔》(又名:贝隆夫人Evita)起,她陆续出演了《玛莉莲》(Marilyn!)、《星光快车》(Starlight Express)、《猫》(Cats)的主角。1993年因主演《热血兄弟》(Blood Brother)而获得托尼奖提名,她1989年曾出演电影版的《歌剧院魅影》。2000年11月4日在伦敦寓所过世,享年50岁。
“意大利之夏” (UN'ESTATE ITALIANA)
演唱者:吉奥吉.莫罗德(Giorgio Moroder)和吉娜.娜尼尼(Gianna Nannini)
“意大利之夏”或许是最成功的世界杯主题曲,至今仍被资深球迷和歌迷所津津乐道。这是首悠扬动听,又振奋人心的歌曲,意大利人将亚平宁半岛上的海风和足球王国对足球运动的理解糅合成迷人的音乐。这首歌有数个版本,原唱录音版较舒缓传统;现场演唱版则加入更多摇滚节奏;因为作曲的是意大利电子乐大师吉奥吉,也有过节奏强劲的混音版。超级球迷香港天王谭咏麟也曾将此歌改成粤语版本的“理想与和平”。两位原唱者都是意大利最著名的流行乐大师,并且此歌也是两人合作写成的,英语版由吉奥吉演唱。
吉奥吉.莫罗德
意大利最著名的电子音乐先锋,是20世纪70年代迪斯科音乐发展中的标志人物。这位1940年4月26日生于奥提西的意大利人,曾经赢得过3座奥斯卡奖和4次金球奖。他有着传奇式的经历,所涉及的领域几乎都带给他巨大的荣誉。他曾经是位吉他手,19岁组建了自己的乐队Covers,出没于欧洲的夜总会中。70年代起,他专心于音乐制作,1969年他推出自己制作的处女单曲“瞧一瞧”(Looky Looky),并与合作伙伴佩特-贝洛特(Pete Bellotte)组成了制作组合。他们的辉煌来自于发掘了曾经当和声歌手的多娜-桑莫(Donna Summer),由此缔造了一种对迪斯科影响深远的音乐现象。70年代后期,莫罗德开始接触电影配乐。并在整个80年代倾心于此工作。他在电影方面最著名的作品是由汤姆-克鲁斯主演的影片《壮志雄心》的主题曲“带走我的呼吸”(Take my breath away)。该曲不仅雄踞英美各大排行榜之首,并摘得奥斯卡最佳歌曲奖。
吉娜.娜尼尼
吉娜1956年6月14日生于意大利迷人的图斯卡尼省。她从小就显现出音乐天赋,在她身上所蕴涵的自然、反叛和自信使她19岁就离家来到米兰闯荡。1976年,她推出同名首张专辑。1979年她做出冒险决定,只身闯荡美国探询摇滚乐根源。虽然她经历了种种失望,但还是深深地发掘出自己的摇滚根源。经过挫折与努力,吉娜成为世界级明星,频繁在欧洲成功举行巡回演唱会,不断与众多著名音乐人有过合作。1989年她同艾多拉多-班那托合作写词了1990年世界杯赛的主题曲“意大利之夏”的歌词,并与吉奥吉在米兰的开幕式携手歌唱。
“荣耀之地”(Gloryland)
演唱者:达利尔.豪(Daryl Hall)
美国一直是足球运动的处女地,把世界杯主办权交到他们手里似乎是个错误的选择,主题曲也变得黯淡。这首“荣耀之地”虽然有个响亮的名字,但是英雄主义色彩在这首歌中荡然无存。“荣耀之地”在音乐风格上更接近于民谣与流行摇滚乐的结合,很有些美国西部荒原的苍茫感。1994年作者兼主唱达利尔创作了此歌,并邀请福音曲演唱组合“黑暗之声”(Sounds of blackness)协助录制。由于作品缺乏对足球运动的共鸣,很快淹没在人们的记忆之中。1994年的世界杯合辑中收录的其他大牌艺人的作品倒是要比主题曲精彩得多。
达利尔.豪
达利尔.豪是美国70和80年代知名组合“豪与奥兹双人组”(Hall and Oates)的成员之一。他1946年10月11日出生,原名Daryl Franklin Hohl。来自费城的达利尔在坦普尔大学结识了后来的伙伴约翰-奥兹(John Oates)。他们几经分合,最后在汤米.莫托拉(Tommy Mottola,后来也是玛莉亚凯莉的经理人)的运作下,签约亚特兰大唱片公司。1972年推出首张专辑《纯粹的奥兹》(Whole Oates)。1984年他们成为历史上排名最高的民谣二人组,同年组合解散,各自发展,1988年为了专辑《Ooh Yeah!》重组。至今他仍有新专辑推出。
另外94年还有一首很流行:我们是冠军
“生命之杯”(La Copa De La Vida)
演唱者:瑞奇.马汀(Ricky Martin)
瑞奇.马汀是世界级偶像歌手,并引领着拉丁音乐浪潮。该歌曲选自他1998年专辑《让爱继续》(Vuelve),并获得全球30个国家单曲排行的冠军,也是1998年法国世界杯的另一首主题曲。“生命之杯” 在世界杯之后也传播甚广,成为很多足球节目用来烘托气氛的第一选用曲目。歌曲中的鼓乐节奏和号角奏鸣都颇为煽情。
瑞奇.马汀
瑞奇.马汀1971年12月24日生于波多黎各,6岁起开始接拍电视广告,很快对表演产生浓厚兴趣。12岁时,瑞奇-马汀加入了少年偶像团体Menudo,这是一支拉丁乐历史上最受欢迎的组合。17岁的马汀在离开Menudo后,决定放下明星身份,重新走入学校完成他最后的高中学业。毕业后,他毅然来到美国纽约。以个人姿态进军歌坛的瑞奇-马汀,1991年推出了首张同名专辑,获得巨大成功,并在全球许多国家掀起了一股拉丁乐狂潮。1994年,瑞奇-马汀参演了电视连续剧《急诊室的故事》,这部在美国ABC电视台收视率颇高的肥皂剧使瑞奇的知名度再次得到了空前提高。1996年,让瑞奇-马汀走红全球的专辑《A Medio Vivir》发行,其中收录的歌曲呈现多元化风貌,收录有法国9周冠军曲“Maria”。令瑞奇走向世界的歌曲“生命之杯”(La Copa De La Vida / The Cup Of Life)收录在大碟《Vuelve》中,他以西班牙文唱出火热的气氛。
“我踢球你介意吗”(法语:La Cour des Grands)
演唱者:尤索.恩多(Youssou N'Dour )& 阿克塞拉.瑞德(Axelle Red)
“我踢球你介意吗”是首轻快的歌曲,带着浓烈的热带情调和欢快的吟唱风格。演唱者都不是法国人,歌曲没有明显的法国特点,可能也正应和了世界杯融合交流的主题,并符合法国人喜好出人意料的性格。但很多人认为并不好听。
尤索.恩多
尤索-恩多是目前世界乐坛最著名的世界音乐歌手之一,这位嗓音独特的塞内加尔人生于1959年10月。美国著名乐评杂志《滚石》是这样评价他的:“如果有哪位来自第三世界的艺人在全球影响力上能和鲍伯-马里(Bob Marley)相提并论的话,那只有尤索-恩多。他的嗓音独特,古老非洲的历史似乎都凝结在他的声线之中。”
阿克塞拉.瑞德
1968年生于比利时的海塞尔特,3岁起学习舞蹈并接触音乐,从莫扎特到南部灵歌,她都有所涉猎。1983年用英语录制了第一张单曲,因为英语最适合她想唱的这类歌曲。在Virgin唱片的支持下,她继续女性灵歌风格的探索。1993年她的第一张专辑《Sans Plus Attendre》终于为她不仅在比利时,更在法语地区赢得了声誉。1998年6月她同尤索-恩多在世界杯开幕式上向法兰西体育场内8万球迷和全球数亿观众演唱了这首充满欢快节奏和热带韵律的歌曲。
“风暴”(Boom)
演唱者:阿纳斯塔西娅(Anastacia)
阿纳斯塔西娅的歌声和形象的差距令人难以置信,靓丽的偶像外型和深沉浑厚的“爵士乐”嗓音给人的视听觉冲击强烈。“风暴”曲调简洁、节奏强劲,流行的曲风给人异域感觉,和“生命之杯” 相比它少了些火般热情,多了份紧迫感强劲的冲击。
阿纳斯塔西娅
阿纳斯塔西娅原名Anastacia Newkirk,1973年9月17日出生于美国芝加哥,父亲是酒店歌手,母亲是纽约百老汇的演员。她14岁时父母离异,随母亲来到纽约,并进入艺术学校。阿纳斯塔西娅1999年参加MTV的新秀选拔赛后加入乐坛。签约Sony之后于2000年发行了个人首张专辑《并非它类》(Not That Kind)获得巨大成功,销量逾200万。2002年发行第二张专辑《自然的怪诞》(Freak of Nature),当前的单曲“Paid My Dues”在全球热播不断。阿纳斯塔西娅的演唱和舞蹈风格以随性自由为特点,金发白肤的抢眼外形之下蕴藏的却是一把“拥有纯粹的黑人灵魂的声线”。去年11月1日,国际足联最终确定阿纳斯塔西娅来演唱2002年韩日世界杯主题歌“风暴”。
“足球圣歌”(Anthem)
演唱者:范吉利斯(Vangelis)
范吉利斯的配乐以华丽见长,我们最熟悉的是将气氛烘托到极致的“火的战车”。这首主题曲中有两个版本,一首电子乐版本的作品是由芬兰音乐家JS16混音完成,兼具东方色彩和电子乐风情。另一首交响乐版传统、大气,作为专辑的结尾恰倒好处。
范吉利斯:当代最成功的电子乐作曲家、新世纪音乐大师。1943年出生于希腊,从小就显露非同一般的音乐才华,然而他拒绝接受钢琴课,并坚持自学成才。1981年荣获奥斯卡电影最佳配乐奖以《火的战车》,从此蜚声国际,电影的主题歌甚至进入美国流行榜十大,其后引发了一系列的电影音乐创作。1992年,范吉利斯获颁法国最富盛誉的艺术文学骑士勋章。他的最新作品是为美国宇航局的“2001火星奥德赛”任务创作的主题音乐“Mythodea”。
2006
Time of Our Lives(我们生命中的时光)
... _1147801267_713.mp3
由Sony BMG唱片公司著名作曲家约尔根·埃洛弗松(Jorgen Elofsson)作曲,超级制作人史蒂夫·麦克(Steve Mac)制作的2006年德国世界杯主题曲“我们生命中的时光”(Time of Our Lives)将在6月9曰慕尼黑的世界杯开幕式上由红遍全球Pop Opera跨界团体Il Divo“美声绅士”组合与RB天后Toni Braxton共同首演。
这首世界杯主题曲是迄今为止感觉最抒情的一首,虽然没有98世界杯瑞奇马丁演唱的那首主题歌劲爆,更没有《意大利之夏》经典,但却不失为一首好歌!
歌词
there was a dream
a long time a ago
there was a dream
destined to grow
into a passion
a fire within
a will to give everything
a desire to win
for the lifetime of heartbreakes
that brought us here today
we'll go all the way
It feels like we're having the time of our lives
Let there be sunshine let it rain
Let's come together as one and the same
Cause it feels like we?re having the time of our lives
We'll find the glory in the end
For all that we are
For all that we are
For the time of our lives
This is the moment
This is our chance
To do what we love and to be
What we're ment to be
for the lifetime of heartbreakes
that brought us here today
we'll go all the way
It feels like we're having the time of our lives
And I'll never forget
For as long as I live
生命之巅
这里有一个梦想
在很久很久以前
这里有一个梦想
不停的向热情蔓延
胸中充满烈火
世界万物都拥有信念
一个愿望就是胜利
为了今天不会带给我们
一生难以忍受的悲伤和失望
我们将一直努力
感觉我们已经拥有了生命之颠
到处都是阳光和雨露
让我们团结成为一体
因为感觉告诉我们
我们已经拥有了生命之颠
我们在最后拥有的最高的荣誉
为了所有的人
为了所有的人
为了我们的生命之颠
就是这片刻
这是我们的机会
去做我们想做的事
那些我们希望的事
为了今天不会带给我们
一生难以忍受的悲伤和失望
我们将一直努力
感觉我们已经拥有了生命之颠
我永远不会忘记
永远不会
如何防范XSS跨站脚本攻击测试篇
不可信数据 不可信数据通常是来自HTTP请求的数据,以URL参数、表单字段、标头或者Cookie的形式。不过从安全角度来看,来自数据库、网络服务器和其他来源的数据往往也是不可信的,也就是说,这些数据可能没有完全通过验证。 应该始终对不可信数据保持警惕,将其视为包含攻击,这意味着在发送不可信数据之前,应该采取措施确定没有攻击再发送。由于应用程序之间的关联不断深化,下游直译程序执行的攻击可以迅速蔓延。 传统上来看,输入验证是处理不可信数据的最好办法,然而,输入验证法并不是注入式攻击的最佳解决方案。首先,输入验证通常是在获取数据时开始执行的,而此时并不知道目的地所在。这也意味着我们并不知道在目标直译程序中哪些字符是重要的。其次,可能更加重要的是,应用程序必须允许潜在危害的字符进入,例如,是不是仅仅因为SQL认为Mr. O'Malley名字包含特殊字符他就不能在数据库中注册呢? 虽然输入验证很重要,但这始终不是解决注入攻击的完整解决方案,最好将输入攻击作为纵深防御措施,而将escaping作为首要防线。 解码(又称为Output Encoding) “Escaping”解码技术主要用于确保字符作为数据处理,而不是作为与直译程序的解析器相关的字符。有很多不同类型的解码,有时候也被成为输出“解码”。有些技术定义特殊的“escape”字符,而其他技术则包含涉及若干字符的更复杂的语法。 不要将输出解码与Unicode字符编码的概念弄混淆了,后者涉及映射Unicode字符到位序列。这种级别的编码通常是自动解码,并不能缓解攻击。但是,如果没有正确理解服务器和浏览器间的目标字符集,有可能导致与非目标字符产生通信,从而招致跨站XSS脚本攻击。这也正是为所有通信指定Unicode字符编码(字符集)(如UTF-8等)的重要所在。 Escaping是重要的工具,能够确保不可信数据不能被用来传递注入攻击。这样做并不会对解码数据造成影响,仍将正确呈现在浏览器中,解码只能阻止运行中发生的攻击。 注入攻击理论 注入攻击是这样一种攻击方式,它主要涉及破坏数据结构并通过使用特殊字符(直译程序正在使用的重要数据)转换为代码结构。XSS是一种注入攻击形式,浏览器作为直译程序,攻击被隐藏在HTML文件中。HTML一直都是代码和数据最差的mashup,因为HTML有很多可能的地方放置代码以及很多不同的有效编码。HTML是很复杂的,因为它不仅是层次结构的,而且还包含很多不同的解析器(XML、HTML、JavaScript、VBScript、CSS、URL等)。 要想真正明白注入攻击与XSS的关系,必须认真考虑HTML DOM的层次结构中的注入攻击。在HTML文件的某个位置(即开发者允许不可信数据列入DOM的位置)插入数据,主要有两种注入代码的方式: Injecting UP,上行注入 最常见的方式是关闭现有的context并开始一个新的代码context,例如,当你关闭HTML属性时使用"并开始新的 可以终止脚本块,即使该脚本块被注入脚本内方法调用内的引用字符,这是因为HTML解析器在JavaScript解析器之前运行。 Injecting DOWN,下行注入 另一种不太常见的执行XSS注入的方式就是,在不关闭当前context的情况下,引入一个subcontext。例如,将改为 ,并不需要躲开HTML属性context,相反只需要引入允许在src属性内写脚本的context即可。另一个例子就是CSS属性中的expression()功能,虽然你可能无法躲开引用CSS属性来进行上行注入,你可以采用x ss:expression(document.write(document.cookie))且无需离开现有context。 同样也有可能直接在现有context内进行注入,例如,可以采用不可信的输入并把它直接放入JavaScript context。这种方式比你想象的更加常用,但是根本不可能利用escaping(或者任何其他方式)保障安全。从本质上讲,如果这样做,你的应用程序只会成为攻击者将恶意代码植入浏览器的渠道。 本文介绍的规则旨在防止上行和下行XSS注入攻击。防止上行注入攻击,你必须避免那些允许你关闭现有context开始新context的字符;而防止攻击跳跃DOM层次级别,你必须避免所有可能关闭context的字符;下行注入攻击,你必须避免任何可以用来在现有context内引入新的sub-context的字符。 积极XSS防御模式 本文把HTML页面当作一个模板,模板上有很多插槽,开发者允许在这些插槽处放置不可信数据。在其他地方放置不可信数据是不允许的,这是“白名单”模式,否认所有不允许的事情。 根据浏览器解析HTML的方式的不同,每种不同类型的插槽都有不同的安全规则。当你在这些插槽处放置不可信数据时,必须采取某些措施以确保数据不会“逃离”相应插槽并闯入允许代码执行的context。从某种意义上说,这种方法将HTML文档当作参数化的数据库查询,数据被保存在具体文职并与escaping代码context相分离。 本文列出了最常见的插槽位置和安全放置数据的规则,基于各种不同的要求、已知的XSS载体和对流行浏览器的大量手动测试,我们保证本文提出的规则都是安全的。 定义好插槽位置,开发者们在放置任何数据前,都应该仔细分析以确保安全性。浏览器解析是非常棘手的,因为很多看起来无关紧要的字符可能起着重要作用。 为什么不能对所有不可信数据进行HTML实体编码? 可以对放入HTML文档正文的不可行数据进行HTML实体编码,如 标签内。也可以对进入属性的不可行数据进行实体编码,尤其是当属性中使用引用符号时。但是HTML实体编码并不总是有效,例如将不可信数据放入 directlyinascript insideanHTMLcomment inanattributename ...NEVERPUTUNTRUSTEDDATAHERE...href="/test"/ inatagname 更重要的是,不要接受来自不可信任来源的JavaScript代码然后运行,例如,名为“callback”的参数就包含JavaScript代码段,没有解码能够解决。 No.2 – 在向HTML元素内容插入不可信数据前对HTML解码 这条规则适用于当你想把不可信数据直接插入HTML正文某处时,这包括内部正常标签(div、p、b、td等)。大多数网站框架都有HTML解码的方法且能够躲开下列字符。但是,这对于其他HTML context是远远不够的,你需要部署其他规则。 ...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE... ...ESCAPEUNTRUSTEDDATABEFOREPUTTINGHERE... 以及其他的HTML常用元素 使用HTML实体解码躲开下列字符以避免切换到任何执行内容,如脚本、样式或者事件处理程序。在这种规格中推荐使用十六进制实体,除了XML中5个重要字符(、、 、 "、 ')外,还加入了斜线符,以帮助结束HTML实体。 -- -- -- "--" '--''isnotrecommended /--/forwardslashisincludedasithelpsendanHTMLentity ESAPI参考实施 Stringsafe=ESAPI.encoder().encodeForHTML(request.getParameter("input")); No.3 – 在向HTML常见属性插入不可信数据前进行属性解码 这条规则是将不可信数据转化为典型属性值(如宽度、名称、值等),这不能用于复杂属性(如href、src、style或者其他事件处理程序)。这是及其重要的规则,事件处理器属性(为HTML JavaScript Data Values)必须遵守该规则。 contentinsideUNquotedattribute content insidesinglequotedattribute 除了字母数字字符外,使用小于256的ASCII值HH格式(或者命名的实体)对所有数据进行解码以防止切换属性。这条规则应用广泛的原因是因为开发者常常让属性保持未引用,正确引用的属性只能使用相应的引用进行解码。未引用属性可以被很多字符破坏,包括[space] % * + , - / ; = ^ 和 |。 ESAPI参考实施 String safe = ESAPI.encoder().encodeForHTMLAttribute( request.getParameter( "input" ) ); No.4 – 在向HTML JavaScript Data Values插入不可信数据前,进行JavaScript解码 这条规则涉及在不同HTML元素上制定的JavaScript事件处理器。向这些事件处理器放置不可信数据的唯一安全位置就是“data value”。在这些小代码块放置不可信数据是相当危险的,因为很容易切换到执行环境,因此请小心使用。
关于ASP网站XSS漏洞,请帮忙过滤一下,谢谢
Function Checkxss(byVal ChkStr)
Dim Str
Str = ChkStr
If IsNull(Str) Then
CheckStr = ""
Exit Function
End If
Str = Replace(Str, "", "")
Str = Replace(Str, "'", "´")
Str = Replace(Str, """", """)
Str = Replace(Str, "", "")
Str = Replace(Str, "", "")
Str = Replace(Str, "/", "/")
Str = Replace(Str, "*", "*")
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "(w)(here)"
Str = re.Replace(Str, "$1here")
re.Pattern = "(s)(elect)"
Str = re.Replace(Str, "$1elect")
re.Pattern = "(i)(nsert)"
Str = re.Replace(Str, "$1nsert")
re.Pattern = "(c)(reate)"
Str = re.Replace(Str, "$1reate")
re.Pattern = "(d)(rop)"
Str = re.Replace(Str, "$1rop")
re.Pattern = "(a)(lter)"
Str = re.Replace(Str, "$1lter")
re.Pattern = "(d)(elete)"
Str = re.Replace(Str, "$1elete")
re.Pattern = "(u)(pdate)"
Str = re.Replace(Str, "$1pdate")
re.Pattern = "(\s)(or)"
Str = re.Replace(Str, "$1or")
re.Pattern = "(\n)"
Str = re.Replace(Str, "$1or")
'----------------------------------
re.Pattern = "(java)(script)"
Str = re.Replace(Str, "$1script")
re.Pattern = "(j)(script)"
Str = re.Replace(Str, "$1script")
re.Pattern = "(vb)(script)"
Str = re.Replace(Str, "$1script")
'----------------------------------
If Instr(Str, "expression") 0 Then
Str = Replace(Str, "expression", "expression", 1, -1, 0) '防止xss注入
End If
Set re = Nothing
Checkxss = Str
End Function
使用方法:Checkxss(request.QueryString("变量")),或者Checkxss(request.form("表单名"))
跨站脚本攻击有哪些类型
1、持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
2、非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
3、DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
扩展资料:
跨站脚本攻击产生的原因是网站过于相信用户的输入,那么解决的办法也很直接,就是从根本上不相信用户的任何输入。一个安全的网站应当对任何用户的任何输入都要进行检查,特别是对用户提交到服务器中保存的数据,更要做筛选。
这种攻击与反射型攻击不同的是,它会把自己的攻击代码保存在网站的服务器上,这样,任何访问了这个页面的用户,都会受到这个攻击。
参考资料来源:
百度百科-跨站脚本攻击
asp项目中如何防止xss攻击
asp中防止xss攻击的方法如下:
确保所有输出内容都经过 HTML 编码。
禁止用户提供的文本进入任何 HTML 元素属性字符串。
根据 msdn.microsoft.com/library/3yekbd5b 中的概述,检查 Request.Browser,以阻止应用程序使用 Internet Explorer 6。
了解控件的行为以及其输出是否经过 HTML 编码。如果未经过 HTML 编码,则对进入控件的数据进行编码。
使用 Microsoft 防跨站点脚本库 (AntiXSS) 并将其设置为您的默认 HTML 编码器。
在将 HTML 数据保存到数据库之前,使用 AntiXSS Sanitizer 对象(该库是一个单独的下载文件,将在下文中介绍)调用 GetSafeHtml 或 GetSafeHtmlFragment;不要在保存数据之前对数据进行编码。
对于 Web 窗体,不要在网页中设置 EnableRequestValidation=false。遗憾的是,Web 上的大多数用户组文章都建议在出现错误时禁用该设置。该设置的存在是有原因的,例如,如果向服务器发送回“X”之类的字符组合,该设置将阻止请求。如果您的控件将 HTML 发送回服务器并收到图 5 所示的错误,那么理想情况下,您应该在将数据发布到服务器之前对数据进行编码。这是 WYSIWYG 控件的常见情形,现今的大多数版本都会在将其 HTML 数据发布回服务器之前对该数据进行正确编码。
对于 ASP.NET MVC 3 应用程序,当您需要将 HTML 发布回模型时,不要使用 ValidateInput(false) 来关闭请求验证。只需向模型属性中添加 [AllowHtml] 即可,如下所示:
public class BlogEntry
{
public int UserId {get;set;}
[AllowHtml]
public string BlogText {get;set;}
}