本文目录一览:
- 1、asp网站如何防止XSS攻击
- 2、asp 求修复方法 XSS跨站脚本漏洞
- 3、下面这段代码总是检测到XSS跨站脚本攻击漏洞找高手求解
- 4、asp项目中如何防止xss攻击
- 5、如何绕过 浏览器xss filter
- 6、SQL语句:sp_stroed_procedures
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;}
}
asp 求修复方法 XSS跨站脚本漏洞
UName=Replace(trim(Request.Form("UserName")),"'","")
PW=Replace(trim(Request.Form("Password")),"'","")
Sex=Replace(trim(Request.Form("Sex")),"'","")
QQ=Replace(trim(Request.Form("QQ")),"'","")
Age=Replace(trim(Request.Form("Age")),"'","")
AH=Replace(trim(Request.Form("AH")),"'","")
SF=Replace(trim(Request.Form("SF")),"'","")
这里
我只举一个例子,以下全部效仿
UName=Replace(trim(Request.Form("UserName")),"'","")
改为
UName=Replace(Replace(Replace(Replace(trim(Request.Form("UserName")),"'",""),Chr(34),""),":",""),"%","")
把' " %等危险字符过滤掉就行了
下面这段代码总是检测到XSS跨站脚本攻击漏洞找高手求解
是否有漏洞,取决于你输出的内容是否可信
比如echo $rows["Author"];
如$rows["Author"]里面是由用户输入且入库未过滤,那么直接输出时存在xss漏洞的。
如$rows["Author"]输入的值为〈script〉 alert( 1 )〈/script 〉
那么直接输出存在漏洞,
简单点修改 echo htmlentities($rows["Author"]),其他echo的类似
如果输出内容可信(过滤过,或来源可信安全)那么直接输出也不存在问题,程序检测的未必准确。
入库过滤了或者本身内容来源可靠不存在此漏洞。
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;}
}
如何绕过 浏览器xss filter
反射xss利用方法,绕过IE XSS Filter
假设 1.php页面代码如下:
echo $_GET['str'];
使用IE浏览器访问该页面
1.php?str=xss code
由于xss filter渲染 导致XSS不成功
接下来我们要这么绕过呢?
如果该站点 可以发帖、友情链接等等 只要能发链接地址其实不只发链接 嘿嘿。
由于IE XSS FILTER 只是检测 referer 是否来自本源,如果来自本源 则 Ie XSS FILTER则不生效。你现在明白了吧
在javascript: date: 等协议无效的情况下:
a href=";xss code"求友情链接/a
IE用户点击即可中招(其他部分浏览器也中招)
SQL语句:sp_stroed_procedures
返回当前环境中的存储过程列表。
语法
sp_stored_procedures [ [ @sp_name = ] 'name' ]
[ , [ @sp_owner = ] 'schema']
[ , [ @sp_qualifier = ] 'qualifier' ]
[ , [@fUsePattern = ] 'fUsePattern' ]
备注
为了获得最大互操作性,网关客户端应只采用 SQL-92 标准模式匹配(百分号 (%) 和下划线 (_) 通配符)。
由于不就当前用户对特定存储过程执行访问的权限信息进行必要的检查,因此访问得不到保证。请注意只使用三部分命名。这表示在对 SQL Server 执行时,只返回本地存储过程而不返回要求四部分命名的远程存储过程。如果 sp_server_info 的结果集中的服务器特性 ACCESSIBLE_SPROC 为 Y,则只返回可由当前用户执行的存储过程。
在 ODBC 中,sp_stored_procedures 与 SQLProcedures 等效。返回的结果按 PROCEDURE_QUALIFIER、PROCEDURE_OWNER 和 PROCEDURE_NAME 排序。
参数
[ [@sp_name =] 'name'
用于返回目录信息的过程名。name 的数据类型为 nvarchar(390),默认值为 NULL。支持通配符模式匹配。
[ @sp_owner = ] 'schema'
该过程所属架构的名称。schema 的数据类型为 nvarchar(384),默认值为 NULL。支持通配符模式匹配。如果未指定 owner,则遵循基础 DBMS 的默认过程可见性规则。
在 SQL Server 中,如果当前架构包含具有指定名称的过程,则返回此过程。如果指定了非限定存储过程,则数据库引擎 按以下顺序搜索此过程:
当前数据库的 sys 架构。
调用方的默认架构(在使用批或动态 SQL 执行时);或者,如果非限定的过程名称出现在另一个过程定义的主体中,则接着搜索包含这一过程的架构。有关默认架构的详细信息,请参阅用户架构分离。
当前数据库中的 dbo 架构。
[ @qualifier =] 'qualifier'
过程限定符的名称。qualifier 的数据类型为 sysname,默认值为 NULL。多种 DBMS 产品支持表的三部分命名方式 (qualifier.schema.name)。在 SQL Server 中,qualifier 表示数据库名称。在某些产品中,它表示表所在数据库环境的服务器名称。
[ @fUsePattern =] 'fUsePattern'
确定是否将下划线 (_)、百分号 (%) 或 方括号 ([ ]) 解释为通配符。fUsePattern 的数据类型为 bit,默认值为 1。
0 = 禁用模式匹配。
1 = 启用模式匹配。
返回代码值
无
结果集
列名 数据类型 说明
PROCEDURE_QUALIFIER
sysname
过程限定符名称。该列可以为 NULL。
PROCEDURE_OWNER
sysname
过程所有者名称。此列始终返回值。
PROCEDURE_NAME
nvarchar(134)
过程名。此列始终返回值。
NUM_INPUT_PARAMS
int
保留供以后使用。
NUM_OUTPUT_PARAMS
int
保留供以后使用。
NUM_RESULT_SETS
int
保留供以后使用。
REMARKS
varchar(254)
对过程的说明。SQL Server 不为该列返回值。
PROCEDURE_TYPE
smallint
过程类型。SQL Server 总是返回 2.0。此值可以为下列值之一:
0 = SQL_PT_UNKNOWN
1 = SQL_PT_PROCEDURE
2 = SQL_PT_FUNCTION
仔细看看联机帮助,里面写的很详细。