XSS攻击
1.OWASP----预防xss

OWASP是一个开源的、非盈利的全球性安全组织,致力于应用软件的安全研究。协助我们在日常的软件应用中能够更加使软件可信赖,和安全。我们在日常软件的开发的过程中,此组织也能为我们提供很多的解决方案及其安全标准

2.安全攻击

1 、DDos攻击
其最明显的特点就是发送大量的攻击数据包,消耗网络带宽资源,影响正常用户的访问。打个比方,每次传输只能是1k的包进行传输,但是ddos攻击,机会一次性发送大量10M的包,导致传输堵塞,大量等待,消耗资源
简单的解决方案:当遇到这种大量数据包,可以让他直接跳转到其他页面或者阐述通道
2.SQL注入攻击
Web页面查询时,恶意注入如:"1’ OR ‘1’='1"或者脚本。因此达到无账号密码,亦可登录网站。所以SQL注入攻击被俗称为黑客的填空游戏。
简单的解决办法:后台使用预编译,可以 以通过数据库防火墙实现对SQL注入攻击的防范,同时后台对请求域中的参数进行校验

/***防止SQL注入,对请求域中的参数进行校验拦截*/
public class SqlFilterUtil
{private static final Logger LOG = LoggerFactory.getLogger(SqlFilterUtil.class);//SQL的注入关键字符,正则private static String[] badSqlRegs = {//"\"", //传json数据时会有双引号,不拦截"\\|", "[gG][rR][oO][uU][pP]_[cC][oO][nN][cC][aA][tT]", "[Tt][aA][bB][lL][eE]_[Ss][Cc][Hh][Ee][Mm][Aa]", "#","exec", "\\d{1,10}\\s*+[>=<]\\s*+\\d{1,10}", "[iI][nN][sS][eE][rR][Tt]\\s++", "[dD][eE][lL][eE][Tt][eE]\\s++","[Uu][Pp][Dd][Aa][Tt][Ee]\\s++", "[Dd][Rr][Oo][Pp]\\s++", "[Ww][Hh][Ee][Rr][Ee]\\s++", "\\s++[Oo][Rr]\\s++","[Oo][Rr][Dd][Ee][Rr]\\s++[Bb][Yy]\\s++", //order by   \\s++表示隔了一个或者多个空白字符(\t\n\x0B\f\r)  "[Tt][Rr][Uu][Nn][Cc][Aa][Tt][Ee]\\s++", "[Ee][Xx][Ee][Cc]\\s++", "[Cc][Oo][Uu][Nn][Tt]\\(","[Dd][Ee][Cc][Ll][Aa][Rr][Ee]\\s++", "[Aa][Ss][Cc]\\(", "[Dd][Ee][Ss][Cc]\\(", "[Mm][Ii][Dd]\\(","[Cc][Hh][Aa][Rr]\\(", "[Uu][Nn][Ii][Oo][Nn]\\s++", "---*+\\s*+", //    --   sql的注释符, *+表示0个或多个"'*+\\s++[Aa][Nn][Dd]\\s++'*.*[>=<].*", //匹配如: ' AND f%='ffdse4555' 这种sql注入参数"[Ii][Nn]\\s*+\\(", "[Nn][Ee][Tt]\\s++[Uu][Ss][Ee][Rr]", "[Xx][Pp]_[Cc][Mm][Dd][Ss][Hh][Ee][Ll][Ll]","[Nn][Ee][Tt]\\s++[Ll][Oo][Cc][Aa][Ll][Gg][Rr][Oo][Uu][Pp]\\s++[Aa][Dd][Mm][Ii][Nn][Ii][Ss][Tt][Rr][Aa][Tt][Oo][Rr]",};public boolean judgeSqlInject(HttpServletRequest request){String badParamVal = "";boolean findBadParam = false;//获得所有请求参数名  Enumeration<String> params = request.getParameterNames();ok: while (params.hasMoreElements()){//得到参数名  String name = params.nextElement();//得到参数对应值  String[] values = request.getParameterValues(name);if (values == null || values.length == 0){continue;}for (String paramVal : values){if (hasInjectionSql(paramVal)){badParamVal = paramVal;findBadParam = true;break ok; //跳出多重循环}}}if (findBadParam){LogUtils.errorLog(LOG, "the request params contains sql keywords! ", null);}return findBadParam;}/*** <判断request域中参数值是否有sql注入的特殊字符>* <功能详细描述>* @param paraValStr* @return [参数说明]**/private boolean hasInjectionSql(String paraValStr){if (StringUtils.isBlank(paraValStr)){return false;}Pattern pattern = null;for (String badSqlReg : badSqlRegs){pattern = Pattern.compile(badSqlReg);Matcher matcher = pattern.matcher(paraValStr);if (matcher.find()) //匹配到含有sql注入的语句{return true;}}return false;}}
3. XSS攻击

1,原理:
跨网站脚本(Cross-site scripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java, VBScript, ActiveX, Flash 或者甚至是普通的HTML。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
2.防御XSS的七条原则
此博客已经写的很清楚,就不在此赘述,博客链接:https://www.cnblogs.com/xiaohouzai/p/8180474.html

/***对页面HTML中的关键字进行处理**、
public class HtmlStringUtil
{/*** HTML关键字处理<p>* 将空格,“&,<,>,\"转义* * @param txt* @return String*/public static String textToHtmlNoBR(String txt){String result = txt;if (result == null){return result;}result = replaceAll(result, "&", "&amp;");result = replaceAll(result, "<", "&lt;");result = replaceAll(result, ">", "&gt;");result = replaceAll(result, "\"", "&quot;");return result;}/*** <HTML关键字处理><p>* 将空格,换行,“&,<,>,\"转义* * @param txt* @return String*/public static String textToHtmlEx(String txt){String result = txt;if (result == null){return result;}result = replaceAll(result, "&", "&amp;");result = replaceAll(result, "<", "&lt;");result = replaceAll(result, ">", "&gt;");result = replaceAll(result, "\"", "&quot;");result = replaceAll(result, "\r\n", "<br>");result = replaceAll(result, "\r", "<br>");result = replaceAll(result, "\n", "<br>");return result;}/*** <HTML关键字至文本反处理>* * @param str* @return String*/public static String textToHtml(String str){String result = str;if (result == null){return result;}result = replaceAll(result, "&", "&amp;");result = replaceAll(result, "<", "&lt;");result = replaceAll(result, ">", "&gt;");result = replaceAll(result, "\"", "&quot;");result = replaceAll(result, "\r\n", "<br>");result = replaceAll(result, "\r", "<br>");result = replaceAll(result, "\n", "<br>");return result;}/*** 将'<' 转换成&lt这种形式* * @param str* @return String*/public static String textToHtmlNoBr(String str){String result = str;if (result == null){return result;}result = replaceAll(result, "&", "&amp;");result = replaceAll(result, "<", "&lt;");result = replaceAll(result, ">", "&gt;");return result;}/*** <字符串大量替换><br/>* 将str字符串中的replacing字符替换成replacement字符* * @param src [替换字符源]* @param replacing  [替换目标字符]* @param replacement [替换结果字符]* * @return String [替换结果]*/public static String replaceAll(String src, String replacing,String replacement){String result = null;StringBuilder builder = new StringBuilder(src);int searchIndex = 0;int replacingLength = replacing.length();int replacementLength = replacement.length();while (true){int index = builder.indexOf(replacing, searchIndex);if (index == -1){break;}builder.delete(index, index + replacingLength);builder.insert(index, replacement);searchIndex = index + replacementLength;}result = builder.toString();return result;}/*** <判断日期是否为空,格式化日期>* * @param str* @return String*/public static String delNull(Date date){String returnStr = "";if (date != null){SimpleDateFormat sf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss ");returnStr = sf.format(date);}return returnStr;}/*** <判断字符串是否为空>* * @param str* @return String*/public static String delNull(String str){String returnStr = "";if (StringUtils.isNotBlank(str)){returnStr = str;}return returnStr;}/*** <换行统一处理>* <功能详细描述>* @param str* @return String*/public static String replaceDosLine(String str){String result = replaceAll(str, "\r\n", "\n");result = replaceAll(result, "\n", "\r\n");return result;}/*** <sql特殊字符处理>* <功能详细描述>* @param str** @return String*/public static String replaceSql(String str){String result = replaceAll(str, "%", "%25");result = replaceAll(result, "&", "%26");result = replaceAll(result, "\\", "%5c");result = replaceAll(result, "_", "%5f");return result;}
}

项目安全 XSS攻击相关推荐

  1. xss攻击-跨站脚本漏洞修复 Springboot项目

    跨站脚本漏洞 XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序.这些恶意网页程序通常是JavaScript,但实际上也可 ...

  2. xss攻击解决方案php项目,php 过滤存储型XSS攻击,_PHP_ 少侠科技

    详细内容 最近做的项目被测试测出了存在存储型XSS,至此记录一下,问题出在了 input 框 :payload:"a" οnclick=alert(1)> 也做了一些XSS过 ...

  3. 使用 PHP 构建的 Web 应用如何避免 XSS 攻击

    本文首先简单介绍开发测试人员如何对 Web 应用进行 XSS 漏洞测试,如何借助工具绕过客户端 JavaScript 校验输入恶意数据:然后针对使用 PHP 语言构建的 Web 站点,从在输出端对动态 ...

  4. 解决SQL注入与XSS攻击

    最近接手之前同事的几个项目,公司利用扫描工具进行全项目扫描,发现了部分项目代码存在安全漏洞,所以需要进行项目代码修复以避免有人恶意攻击.这个任务自然而然的就落到我手上.在这里记录一下操作的过程. 扫描 ...

  5. xss攻击中受影响的是服务器还是客户端,安全测试基础之 XSS

    在web项目安全漏洞中,XSS是最为流程的漏洞类型之一,今天就来介绍一下XSS. 01 - XSS介绍 跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中W ...

  6. xss过滤器无法处理ajax请求_thunkPHP 预防XSS攻击

    比如在有人恶意在你的输入框中或文本域中输入<script>标签,如果不做处理的话,输入框中的<script>会保存到我们数据库中,等到将这个数据拿出来展示的时候,就等于将这个内 ...

  7. java -xss_java 防止xss攻击

    关于xss的概念和解决方案网上很多,可以参考这个: http://www.cnblogs.com/TankXiao/archive/2012/03/21/2337194.html#xsshappen ...

  8. java解决XSS攻击常用方法总结

    前言 在项目验收阶段,通常会对待验收项目做一些安全漏洞的测试,比如接口攻击,并发测试,XSS注入,SQL恶意注入测试,安全越权等操作,这时,就是考验项目的安全方面是否做的足够健壮的时候,本篇对XSS脚 ...

  9. 前端安全 -- XSS攻击

    XSS漏洞是最广泛.作用最关键的web安全漏洞之一.在绝大多数网络攻击中都是把XSS作为漏洞链中的第一环,通过XSS,黑客可以得到的最直接利益就是拿到用户浏览器的cookie,从而变相盗取用户的账号密 ...

最新文章

  1. 客户服务业热切渴望“按需客户体验”模式
  2. GaussianView5对分子结构.gjf文件的解读
  3. 第十六届全国大学生智能车竞赛-航天智慧物流创意组-技术培训
  4. [转]Docker基础-使用Dockerfile创建镜像
  5. PHP第五周答案,算法设计与分析第五周作业——Word Ladder
  6. 内网通 去广告_新高一攻略|让我们一起跟升学e网通名师看看如何学好高中化学...
  7. 用dw(dreamweaver)开发asp.net,连接数据库时出现“http错误500,服务器内部错误”的解决方法...
  8. 【资源共享】Rockchip I2C 开发指南 V1.0
  9. 关于Layer UI表格列日期格式化及取消自动填充日期
  10. Hive精选高频面试题
  11. 360木马查杀后mysql数据不能启动
  12. Nginx 实现域名访问以及反向代理
  13. 奥鹏计算机19春在线作业,东师多媒体计算机技术19春在线作业2【标准答案】
  14. PCL点云使用贪婪三角化进行曲面重构
  15. 中国企业出海应尽早把握海外社交媒体运营红利-出海传播趋势的言灵视角
  16. Nacos 1.1.0发布,支持灰度配置和地址服务器模式
  17. speedtree中文对照ppt_SpeedTree树木建模入门知识整理
  18. 一级计算机字处理知识点,全国计算机等级考试一级word文字处理题考点
  19. VisualFreeBasic:VisualBasic6望尘莫及之短路逻辑
  20. 全息图像学习记录(1)——SFFT算法

热门文章

  1. win10打不开设置,弹出来找不到应用程序
  2. 基于ISO 21448和STPA方法的自动驾驶安全性和可靠性设计
  3. 诚之和:巨人网络拟收购《摩尔庄园》开发商72.81%股权,15亿花得值
  4. Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解)...
  5. Java中Jaxb的使用
  6. 【神秘海域】[动图] 顺序表千字破解~
  7. 低代码开发平台是什么意思?低代码开发平台优势!
  8. BST(二叉搜索树)
  9. Python实现 交叉验证
  10. python冒泡排序代码和注释_Python 冒泡排序