web安全漏洞相关
1,密码输入框input应该 设置:autocompete="off"
2,设置HTTPOnly,禁止客户端修改cookie
3,不要展示给用户详细的错误信息;
一下内容复制自:https://www.jb51.net/article/135079.htm
标题:详解Asp.net web.config customErrors 如何设置
===============================================================================
customErrors也经常在开发部署中看到<customErrors mode="Off" />,设置这样可以在页面上看到详细的错误信息。但也为黑客提供了攻击的线索。
customErrors
该节点有三种可选的设置项
- On:服务器开发的最安全选项,因为它总是隐藏错误提示信息。
- RemoteOnly:向大多数用户展示一般的错误信息,但向拥有服务器访问权限的用户展示完整的错误提示信息。换句话说,仅向远程客户端端显示自定义错误,并向本地主机显示 ASP.NET 错误。默认值。
- Off:最容易受到攻击的选项,它向访问网站的每个用户展示详细的错误提示消息。
详细的错误信息可能会暴露应用程序的内部结构,比如如果写的sql语句中报错,可能会暴露数据表,以及sql语句,这是非常不安全的。在Off设置下的网站,黑客会不断的尝试,传递不同的参数,使你的网站出错,然后暴露你的应用程序的内部结构。
mode=Off
<system.web> <authentication mode="None" /> <compilation debug="true" targetFramework="4.5" /> <httpRuntime targetFramework="4.5" /> <customErrors mode="Off" defaultRedirect="error"> </customErrors> </system.web>
在TestAction中直接抛出一个异常,那么我们可以看到与下面类似的黄页
在黄页上面可以看到,页面对应逻辑的堆栈信息,进而暴露项目结构信息。非常的不安全。
那么如果是mode=Off,并且在事件Application_Error中记录并清除错误,会看到什么结果?
protected void Application_Error(object sender, EventArgs e) { var context = HttpContext.Current; if (context != null) { Exception objErr = context.Server.GetLastError(); if (objErr != null) { string err = "Error Caught in Application_Error event/n" + "Error in:" + Request.Url.ToString() + "/nError Message:" + objErr.Message.ToString() + "/nStack Trace:" + objErr.StackTrace.ToString(); 、、、、、日志逻辑 Server.ClearError(); } } }
<customErrors mode="Off" defaultRedirect="Error"> </customErrors>
defaultRedirect 指定发生错误时浏览器指向的默认 URL。如果没有指定 defaultRedirect,则会显示一般性错误。URL 既可以是绝对的(例如 http://www.***.com/ErrorPage.htm),也可以是相对的。相对 URL(如 /ErrorPage.htm)是相对于指定 defaultRedirect 的 Web.config 文件而言的,而不是针对产生错误的网页。以波形符 (~) 开头的 URL(如 ~/ErrorPage.htm)表示所指定的 URL 是相对于应用程序根路径而言的。
通过上面的操作,如果设置Off,并且在Application_Error事件中捕获异常,并 Server.ClearError(),那么如果报错,在前端页面就会看到空白的页面。
通过这个也可以说明,如果应用程序出错,先触发的Application_Error事件,ClearError之后,那么在页面上就看不到结果了。
mode=On
在设置On模式情况下,如果应用程序发生错误,会跳转到自定义的错误页,这里使用了defaultRedirect属性,并没有配置 <error statusCode="500" redirect="error"/>
mode=RemoteOnly
通过字面意思,仅仅远程,仅仅远程什么呢?可以看下例子。目前所在编码环境,通过vs调试状态,相对远程要访问的用户,可以将本机当做服务器。那么这就是本地,远程访问的浏览器就是Remote。
可以看到,在服务器端,访问仍然能看到黄页,也就是上面所说的ASP.NET错误。那么我们将站点部署在服务器,然后在本地访问会出现什么情况呢?
通过客户端访问服务器的url,则会跳转到默认的自定义错误页面。那么在服务器端又是什么情况呢?
说明: 仅向远程客户端端显示自定义错误,并向本地主机显示 ASP.NET 错误
总结
所以,不要在生产环境中将customErrors关闭。 推荐开启RemoteOnly或者On并定义自定义的错误页面。
=========================================================
4,
A.确保web应用程序验证所有表单、头、cookie字段、隐藏字段和参数
B.确保无论何时将HTTP请求发送到HTTP后端,都要对用户提供的输入进行编码
C.从客户端角度来看,在将用户提供的内容放置在链接中时使用URL编码
5,cookie要设置过期时间,不要让cookie过期时间变成永久;
6,文章:低危漏洞- X-Frame-Options Header未配置
===========================================================
详细内容请点击查看原文;
配置 IIS
配置 IIS 发送 X-Frame-Options 响应头,添加下面的配置到 Web.config 文件中:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="SAMEORIGIN" /> </customHeaders> </httpProtocol> ... </system.webServer>
X-Frame-Options 响应头
X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 <frame>, </iframe> 或者 <object> 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。
使用 X-Frame-Options
X-Frame-Options 有三个值:
DENY
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
SAMEORIGIN
表示该页面可以在相同域名页面的 frame 中展示。
ALLOW-FROM uri
表示该页面可以在指定来源的 frame 中展示。
换一句话说,如果设置为 DENY,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为 SAMEORIGIN,那么页面就可以在同域名页面的 frame 中嵌套。
==============================================================
7,跨站脚本保护 Missing Cross-Frame Scripting Protection
跨框架脚本漏洞允许脆弱的应用程序页面被包含在恶意网站的iframe中。当受害者被诱骗通过浏览器访问恶意网页时,就会发生这种情况
“点击劫持”
欺骗用户在不知情的情况下在HTML iframe标记内的脆弱站点上进行交互。
如果成功利用跨帧脚本,攻击者可以进行钓鱼、帧嗅探、社会工程或跨站点请求伪造攻击
应用程序的HTTP响应字段中没有设置X-Frame-Options标头在应用程序的HTML主体内容中没有找到框架破坏脚本(参见下面的建议)
下面是一些关于如何保护应用程序不受点击劫持的方法:
客户端保护:框架破坏
这种技术是为了防止站点在试图装入iframe时无法正常工作。
将ID应用于样式元素
<style id="antiClickjack">body{display:none !important;}</style>
然后,在脚本中立即根据其ID删除样式
<script type="text/javascript"> if (self === top) { var antiClickjack = document.getElementById("antiClickjack"); antiClickjack.parentNode.removeChild(antiClickjack); } else { top.location = self.location; } </script>
在这种方法中,所有内容都在文档头中,并且可能需要API中的一个方法。
X-Frame-Options响应标头指示浏览器是否应该允许站点呈现在框架或对象中。这确保避免点击劫持攻击
X Frame Options permitted values are –
X-Frame-Options: Deny
Page cannot be displayed in a frame
X-Frame-Options: Sameorigin
Page can be display in a frame on the same origin
X-Frame-Options: Allow-From “https://url.com”
Page can be displayed in a frame on a specified URL
This can be configure according on what type of server use –
Apache
To configure Apache to send the X-Frame-Options header for all pages, add this to your site's configuration
Header always append X-Frame-Options DENY
Ngix
To configure nginx to send the X-Frame-Options header, add this either to your http, server or location configuration
add_header X-Frame-Options DENY;
Microsoft IIS
To configure IIS to send the X-Frame-Options header, add this your site's web.config file
<system.webServer> ... <httpProtocol> <customHeaders> <add name="X-Frame-Options" value="DENY" /> </customHeaders> </httpProtocol> ... </system.webServer>
地址:https://www.owasp.org/index.php/Cross_Frame_Scripting
X Frame Options
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options
Clickjacking
https://www.owasp.org/index.php/Clickjacking
8,百度十大应用程序安全风险
注入攻击;
认证中断;
应用程序和api不能正确地保护敏感数据,比如金融、医疗和PII。攻击者可能会窃取或修改这些保护薄弱的数据,从而实施信用卡欺诈、身份盗窃或其他犯罪行为。在没有额外保护的情况下,例如在休息或传输中加密,敏感数据可能会受到损害,在与浏览器交换时需要特别注意。
访问控制中断;
安全配置错误
安全配置错误是最常见的问题。这通常是不安全的默认配置、不完整的或临时配置、开放的云存储、配置错误的HTTP头文件和包含敏感信息的冗长错误消息的结果。不仅要安全地配置所有操作系统、框架、库和应用程序,而且还必须及时地对它们进行补丁和/或升级
跨站点脚本编制(XSS)
当应用程序在新的web页面中包含不受信任的数据而没有进行适当的验证或转义,或者使用可以创建HTML或JavaScript的浏览器API使用用户提供的数据更新现有的web页面时,就会出现XSS缺陷。XSS允许攻击者在受害者的浏览器中执行脚本,这些脚本可以劫持用户会话、破坏web站点或将用户重定向到恶意站点
不安全的反序列化
不安全的反序列化通常会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,它们也可以用来执行攻击,包括重放攻击、注入攻击和特权升级攻击。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
2018-11-15 防止网络攻击
2018-11-15 重放攻击
2018-11-15 web登录密码加密
2018-11-15 js代码混淆和加密
2018-11-15 JSON.parse与eval
2018-11-15 加密算法
2017-11-15 js的undefined怎么判断