1、安全攻击

1、SQL、HTML、JS、OS命令注入

2、XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码

3、CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信任的网站。

4、目录遍历漏洞

5、参数篡改

6、会话劫持

2、防止攻击的措施总结

1) 对用户输入的数据进行全面安全检查或过滤,尤其注意检查是否包含SQL 或XSS特殊字符。

验证用户输入的数据,包括值、类型、范围等等,用验证控件进行验证 RequiredFieldValidator RangeValidator RegularExpressionValidator

这些检查或过滤必须在服务器端客户端都进行。客户端服务端都要进行验证,客户端为了提高用户体验,服务端才可以有效防止威胁

2)不要使用管理员权限的数据库连接,不要使用动态拼接sql

3)机密信息加密,不能使用明文

4)每个页面加载时,对用户合法性进行判断。

5)登录后session中的敏感信息需要加密,避免在永久cookies中存储敏感信息,重要的cookie标记为http only

6)发送敏感信息时使用SSL、POST方式,尽量使用新型web HSTS安全协议

7)不要直接抛出异常的详细信息给用户,异常返回友好的页面,防止用户看到敏感信息

8)在服务器与网络的接口处配置防火墙,用于阻断外界用户对服务器的扫描和探测。

9)限制网站后台访问权限,如:禁止公网IP访问后台;禁止服务员使用弱口令。

10)关闭windows的8.3格式功能。DOS系统下的命令方式为8.3格式,即文件名不超过8个字符,扩展名不超过3个字符。形如:???.exe 。

现在Windows系统文件名长度最长可达255个字符了。

11)限制敏感页面或目录的访问权限。

12)项目发布前使用使用漏洞扫描软件,如IBM appScan,UnisWebScanner,对安全性进行评估。

安全漏洞及防止:

1、sql注入漏洞
     1、在框架中内置对有害语句及符号的过滤,如insert ‘ update,在基类进行过滤,这样子类就不用关心也可以避免这些常用的攻击了

 /// <summary>/// 过滤 Sql 语句字符串中的注入脚本/// </summary>/// <param name="source">传入的字符串</param>/// <returns>过滤后的字符串</returns>public static string SqlFilter(string source){if (string.IsNullOrEmpty(source)){return "";}//单引号替换成两个单引号source = source.Replace("'", "''");source = source.Replace("\"", "");source = source.Replace("&", "&amp");source = source.Replace("<", "&lt");source = source.Replace(">", "&gt");source = source.Replace("delete", "");source = source.Replace("update", "");source = source.Replace("insert", "");//半角封号替换为全角封号,防止多语句执行source = source.Replace(";", ";");//半角括号替换为全角括号source = source.Replace("(", "(");source = source.Replace(")", ")");///要用正则表达式替换,防止字母大小写得情况//去除执行存储过程的命令关键字source = source.Replace("Exec", "");source = source.Replace("Execute", "");//去除系统存储过程或扩展存储过程关键字source = source.Replace("xp_", "x p_");source = source.Replace("sp_", "s p_");//防止16进制注入source = source.Replace("0x", "0 x");return source;}

2、坚持使用参数化方式赋值
     3、不要直接抛出异常的详细信息给用户,异常返回友好的页面,防止用户看到数据库的细节,关闭了Web.Config的CustomErrors的时候,可能就不会看到。
         <system.web>
              <compilation debug="true" targetframework="4.0" />
         </system.web>
2、XSS又叫CSS--Cross Site Script 跨站脚本攻击
     1、清理用户输入,过滤js代码,过滤特殊字符
          [1] <>(尖括号)     [5] ;(分号)
          [2] "(引号)           [6] ()(括号)
          [3] '(单引号)         [7] &(& 符号)
          [4] %(百分比符号) [8] +(加号)
     2、使用HttpUitility及AntiXSSLibrary类库中的方法对html代码进行处理

赋值不会弹框 this.lblName.Text = Encoder.HtmlEncode("<script>alert('OK');</script>");

编码方法 使用场景
HtmlEncode(String) 不受信任的HTML代码。
HtmlAttributeEncode(String) 不受信任的HTML属性
JavaScriptEncode(String) 不受信任的输入在JavaScript中使用
UrlEncode(String) 不受信任的URL
VisualBasicScriptEncode(String) 不受信任的输入在VBScript中使用
XmlEncode(String) 不受信任的输入用于XML输出
XmlAttributeEncode(String) 不 受信任的输入用作XML属性

3、用户信息用MD5加密

       #region MD5加密/// <summary>/// 获取MD5哈希值/// </summary>/// <param name="Text">字符串</param>/// <returns>MD5哈希值</returns>public static string GetMd5Hash(string Text){MD5 md5 = MD5.Create();byte[] data = md5.ComputeHash(Encoding.Default.GetBytes(Text));StringBuilder builder = new StringBuilder();for (int i = 0; i < data.Length; i++){builder.Append(data[i].ToString("x2"));}return builder.ToString();}/// <summary>/// 验证MD5哈希值/// </summary>/// <param name="Text">字符串</param>/// <param name="TextHash">哈希值</param>/// <returns>相同返回True,不同返回False</returns>public static bool VerifyMd5Hash(string Text, string TextHash){string hash = GetMd5Hash(Text);StringComparer comparer = StringComparer.OrdinalIgnoreCase;if (0 == comparer.Compare(hash, TextHash)){return true;}else{return false;}}#endregion

  

4、在页面加载时判断用户是否登录,如果没有登录则转到登录界面,每个页面继承基类BaseControl

  protected override void OnActionExecuting(ActionExecutingContext filterContext){//身份验证if (CurrentUser == null){string request = System.Web.HttpContext.Current.Request.Headers.Get("X-Requested-With");if (string.Compare(request, "XMLHttpRequest", true) == 0){filterContext.Result = new JsonResult { Data = "登录超时,请刷新页面!" };filterContext.HttpContext.Response.ContentType = "text/plain;charset=UTF-8";filterContext.HttpContext.Response.Status = "403 Internal Server Error";filterContext.HttpContext.Response.StatusCode = 403;}else{filterContext.Result = new RedirectResult("~/Login/SessionOutTime");}}}

  

参见:

Web的脆弱性:各种注入、攻击

Web开发常见的几个漏洞解决方法

PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)

转载于:https://www.cnblogs.com/xiaochun126/p/5113371.html

web开发中常见的安全漏洞及避免方法相关推荐

  1. 【Web安全】Web开发中常见的安全误区

    安全是Web应用程序不容忽视的一个重要因素,而在Web应用开发中,一些开发者由于缺乏安全方面的意识,导致Web应用存在风险.下面来介绍Web开发中常见的一些安全误区. 如果我们使用Web框架,那么不必 ...

  2. WEB开发中常见的漏洞

    一.SQL注入漏洞  SQL注入攻击(SQL Injection),简称注入攻击.SQL注入,被广泛用于非法获取网站控制权,是发生在应用程序的数据库层上的安全漏洞.在设计程序,忽略了对输入字符串中夹带 ...

  3. web开发中常见的错误信息

    1.Warning: mysql_connect() [function.mysql-connect]: Access denied for user'beijingphp'@'localhost'  ...

  4. java web开发常见问题_javaWeb开发中常见的问题

    1.修改表单提交的时候不好使可能是因为没写对应隐藏域的ID 2.el表达式在js代码中要加"",例如 "${}" 3.JavaScript中的函数也有重载的特性 ...

  5. Web开发中的常见应用

    一.文件下载 文件下载功能是web开发中经常使用到的功能,使用HttpServletResponse对象就可以实现文件的下载. 文件下载功能的实现思路: 获取要下载的文件的绝对路径 获取要下载的文件名 ...

  6. Java Web开发中路径问题小结

    Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...

  7. web开发中的长度单位(px,em,ex,rem),如何运用,看完这篇就够了!

    原创 2017-03-08 web小二 web前端开发 作为一名前端开发人员,css中的长度单位,都是我们在工作中非常熟悉的名词,因为没有它们,我们就不能声明某个字符应该多大,或者某些图像周围应该留白 ...

  8. web开发中常用的概念

    Tomcat服务器 Web开发中的常见概念 B/S系统和C/S系统 Brower/Server:浏览器 服务器 系统 ----- 网站 Client/Server:客户端 服务器 系统 ----- Q ...

  9. Web 开发中 Blob 与 FileAPI 使用简述

    本文节选自 Awesome CheatSheet/DOM CheatSheet,主要是对 DOM 操作中常见的 Blob.File API 相关概念进行简要描述. Web 开发中 Blob 与 Fil ...

最新文章

  1. php的闭包函数use的使用
  2. [文档].JLINK挂了怎么办?自己修![转载].JLINK_V8固件烧录和固件升级指导.pdf
  3. 跟我学XSL(二) -XSL的运算符
  4. JZOJ 4932. 【NOIP2017提高组模拟12.24】B
  5. 【机器学习算法专题(蓄力计划)】一、机器学习简史和常用算法的梳理
  6. 24口光纤配线架 cad块_光纤配线架cad画法
  7. 华为交换机关闭网口_关闭端口的命令 怎么开启华为交换机关闭端口,命令谁知道啊。...
  8. 二维傅里叶变换简化方式
  9. 灰度变换与空间滤波——图像增强
  10. 局域网网络流量监控_【网络监控与安全】主要网络流量处理技术
  11. Kaleao推出基于ARM的服务器Kmax
  12. 《tensorflow实战》6——强化学习之策略网络
  13. leetcode:1788.Maximize the Beauty of the Garden
  14. 【论文笔记 | TGRS 2021】多内容互补网络:MCCNet
  15. 吉信通php 短信配置,吉信通:手机APP为什么要用短信验证?
  16. 敏捷ACP 常用关键词整理 敏捷ACP 常用知识点整理
  17. 2022.10.13 周四(正则表达式)
  18. DM642开发板复位芯片TL7705A
  19. 由浅入深玩转华为WLAN—21 漫游系列(8)不同AC之间三层漫游【二层上线+直连式+隧道转发模式,相同VLAN,但不同子网的环境】
  20. A WebView method was called on thread 'JavaBridge'. All WebView methods must be called

热门文章

  1. java 向nodejs 发送请求简单案例
  2. 为啥不能用uuid做MySQL的主键!?
  3. 从架构到代码:软件开发最新趋势解析
  4. Mybatis 的工作原理,写得太好了!
  5. Java 中几种常用的 RPC 框架介绍
  6. 未来我们对微服务和 Serverless 架构有什么期望
  7. 面试感悟—-一名3年工作经验的程序员应该具备的技能
  8. Eclipse深度患者设置VSCode快捷键
  9. Makefile:自动化变量 $@,$^,$<,$?
  10. 【Python】青少年蓝桥杯_每日一题_1.03_输出字符串