跨站脚本和HTML编码

如果我HTML编码由网站的用户输入的任何数据,当我重新显示,将在防止CSS漏洞?

此外,有没有一种工具/产品可用,将净化我的用户输入了我,让我没有写我自己的套路。

--------------解决方案-------------

有各种微妙之处这个问题,虽然在一般的答案是肯定的。

  • 您的网站的安全性在很大程度上取决于你把数据。 如果你把它当作合法的文本,基本上没有办法攻击者执行跨站脚本。 如果你把它放在一个属性,如果你忘记了逃跑报价或不检查多字节良构,你有可能的攻击。 如果你把它放在一个JSON变量,而不是逃避不当可导致任意JavaScript。 等等,等等语境是非常重要的。
  • 其他的用户建议使用XSS清除或XSS检测功能。 我倾向于认为XSS清除为用户不友好的; 如果我张贴像一个电子邮件地址<foo@example.com>和你删除XSS功能,认为这是一个HTML标签,该文本神奇消失。 如果我运行一个XSS论坛,我不希望人们的示例代码被删除。 检测是一个小更明智的; 如果你的应用程序可以告诉当有人攻击它,它可以禁止该IP地址或用户帐户。 您应该谨慎使用这种但是功能; 无辜者能够而且将会陷入了困境。
  • 验证是网站逻辑的重要组成部分,但它也是独立逸出。 如果我不验证什么,但逃避一切,就没有跨站脚本攻击,但是有人会说,他们的生日是“天乐死了”,并且应用程序将不会是明智的。 从理论上讲,不够严格验证某些数据类型可以进行转义的所有职责(思号码,枚举,等等),但它的防御一般的好做法,深入反正逃避它们。 即使你是100%,这是一个整数。 它可能不是。
  • 逃离明文是一个微不足道的问题; 如果你的语言不给你一个函数,一个字符串替换为<> " ' &与其相应的HTML实体会做的伎俩。(你需要其他的HTML实体只有当你不使用UTF-8 )。允许HTML标签是不平凡的,并值得自己的堆栈溢出的问题。

编码的HTML是一个开始......它不会从所有XSS攻击保护。

如果你使用PHP,这里是一个不错的功能,你可以在你的站点使用:Kallahar的RemoveXSS()函数

如果你不使用PHP,至少代码是很好的注释,解释每个部分的宗旨,然后可以适用于其他编程语言。

答案是否定的,编码是不是足够多。 为XSS最好的保护是所有输入数据和所有输出数据的适当的编码的“白名单”验证的组合。 验证允许攻击的检测和编码防止任何成功的脚本注入从浏览器中运行。 如果您使用的是.NET,您可以检查这个库http://msdn.microsoft.com/en-us/library/aa973813.aspx

你也可以检查一些备忘单来测试你的保护:http://ha.ckers.org/xss.html

问候,

胜利者

HtmlEncoding输入让你的方式通过不允许HTML渲染到页面的很大一部分。

对于不同的语言项目应该存在有消毒的数据。 在.NET中你可以使用Server.HtmlEncode(txtInput.Text)输入数据从一个名为txtInput文本框。

正如其他人所说的,需要更多的项目得到真正的保护。

分类:asp.net 时间:2012-01-01 人气:0
本文关键词: asp.net,XSS,HTML编码
分享到:

相关文章

  • 你怎么ASP.NET输出UTF-16编码的文本? 2013-05-08

    你怎么ASP.NET输出UTF-16编码的文本? 序列化的.NET对象默认情况下是UTF-16格式. 现在我想将字符串发送作为输出响应.ashx的请求. 我得到的错误:交换机从当前编码到指定的编码不支持. 错误处理资源 我如何告诉我的网站或网页使用UTF-16格式. 谢谢. 更新:阅读这两个答案. --------------解决方案------------- 一般:没有. 网页为UTF-16混淆了很多工具,使浏览器的行为在奇怪,意想不到的方式. (ESP:链接脚本,表单提交,代理). UTF-

  • ASP.NET Excel导出编码的问题 2012-08-17

    我做的ASP.NET网站的某些Excel的出口. 一切正常的编码方式的除外. 当我在Excel中打开它,它看起来像这样: Eingabe Kosten JEGerätGerät:Gerätebezeichnung:BetriebsmittelHeizöl在â,¬:4 Dieselverbrauch在â,¬:4 这是我的代码: Response.Clear(); Response.ContentType = "application/ms-excel"; Response.Add

  • 阅读正文在ASP.NET分块传输编码的HTTP请求 2013-03-30

    一个J2ME客户端发送带有块传输编码的HTTP POST请求. 当ASP.NET(在IIS6和WebDev.exe.server)尝试读取它集内容长度要求为0.我想这是确定的,因为请求时加载的内容长度是未知的. 然而,当我读Request.InputStream到最后,则返回0. 下面是我用来读取输入流的代码. using (var reader = new StreamReader(httpRequestBodyStream, BodyTextEncoding)) { string readS

  • 在表单提交asp.net的MVC编码 2013-11-09

    我用我的asp.net mvc的形式的富文本编辑器(nicedit有一个textarea),当我提交表单上的帖子,因为它不是HTML编码我得到以下信息:"有潜在危险的Request.Form值从客户端"进行检测. 我怎样才能HTML编码在后textarea的? 我不想取消验证. 有没有一种方法使用上提交了Html.Encode帮手? 谢谢. --------------解决方案------------- 你可以装点处理表单提交的ValidateInputAttribute的操作: [V

  • 设置控件的属性时,ASP.NET引号字符编码导致问题 2014-02-23

    我有一个ASP.NET Web应用程序,并在某一点上我这样做: mycontrol.stringparameterforjscript = "document.getElementById('" + myotherparam + "').value = 'Hello'"; 问题是,这件事情是行不通的. 正如你所看到的这台有些标签的某些事件的JavaScript. 那么当页面redered的问题是,我的参数如下: <textarea onfocus="

  • 启用ASP.NET块传输编码 2014-06-14

    我居住在IIS7一个ASP.NET 3.5的网站. 我使用的动态压缩,想看看我是否能实现分块编码. 有没有在IIS一些设置或网络配置,使得它? --------------解决方案------------- 根据我的经验,在调用Response.Flush()将设置传输编码为分块. 而实际上我认为设置Response.BufferedOutput将其设置为分块每次Response.OutputStream被刷新. 也就是说,除非内容长度已被设定,那么它只是刷新而不设置分块的输出. 如果编辑IIS

  • ASP.NET - 避免硬编码路径 2014-07-10

    我在寻找一个最佳实践的解决方案,旨在减少被硬编码在ASP.NET应用程序的URL的数量. 例如,当查看产品详细信息屏幕,对这些细节进行编辑,然后提交更改,用户被重定向到产品列表屏幕. :相反,编码以下的 Response.Redirect("~/products/list.aspx?category=books"); 我想有一个适当的解决方案,可以让我做这样的事情: Pages.GotoProductList("books"); 其中Pages是共同的基类的一个成员

  • 没有发射ASP.net XSS请求验证 2014-09-17

    我有与ASP.net应用程序的轻微问题 - XSS请求验证(即抛出一个"有潜在危险的Request.Form值......"除外),似乎并不为我们工作正常. 我在我们的网站下面简单的测试形式: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="Test2.aspx.vb" Inherits="Test2" %> <form i

  • ASP经典:字符串编码 2014-10-12

    昨天我遇到一个很奇怪的错误,当我重构一个旧的ASP经典的Web应用程序的起始页面. 但在此之前我解释这个问题我必须解释该网站是如何构建的. 该网站本身是由保存为ANSI窗口1252发送到我的猜测是编码为代码页1252浏览器输出的ASP页面,因为没有编码既不是在响应头也不在HTML HEAD标记声明. 问题: 当我重构登录页面(由于安全问题),我做了以下内容: 转换的ASP文件为utf-8 新增<%@ Language="VBScript" @CODEPAGE=65001 %>

  • 爪哇 - XSS - HTML编码 - 字符实体引用与数字实体引用 2015-01-19

    我们一直在寻找各种方法来进行HTML编码我们的JSP页面来对抗XSS. OWASP的网站显示How_to_perform_HTML_entity_encoding_in_Java 关于实体本文会谈编码"大五",即 21 {"#39", new Integer(39)}, // ' - apostrophe 22 {"quot", new Integer(34)}, // " - double-quote 23 {"amp&qu

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.564 (s). 10 q(s)