转载自 https://www.cnblogs.com/101key/p/3569217.html

1. 防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击。

2. Cookie 防盗

首先避免直接在cookie 中泄露用户隐私,例如email、密码等等。其次通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放。

3. 尽量采用POST 而非GET 提交表单

POST 操作不可能绕开javascript 的使用,这会给攻击者增加难度,减少可利用的

跨站漏洞。

4. 严格检查refer

检查http refer 是否来自预料中的url。这可以阻止第2 类攻击手法发起的http 请求,也能防止大部分第1 类攻击手法,除非正好在特权操作的引用页上种了跨站访问。

5. 将单步流程改为多步,在多步流程中引入效验码

多步流程中每一步都产生一个验证码作为hidden 表单元素嵌在中间页面,下一步操作时这个验证码被提交到服务器,服务器检查这个验证码是否匹配。

首先这为第1 类攻击者大大增加了麻烦。其次攻击者必须在多步流程中拿到上一步产生的效验码才有可能发起下一步请求,这在第2 类攻击中是几乎无法做到的。

6. 引入用户交互

简单的一个看图识数可以堵住几乎所有的非预期特权操作。

7. 只在允许anonymous 访问的地方使用动态的javascript。

8. 对于用户提交信息的中的img 等link,检查是否有重定向回本站、不是真的图片等

可疑操作。

9. 内部管理网站的问题

很多时候,内部管理网站往往疏于关注安全问题,只是简单的限制访问来源。这种网站往往对XSS 攻击毫无抵抗力,需要多加注意。安全问题需要长期的关注,从来不是一锤子买卖。XSS 攻击相对其他攻击手段更加隐蔽和多变,和业务流程、代码实现都有关系,不存在什么一劳永逸的解决方案。此外,面对XSS,往往要牺牲产品的便利性才能保证完全的安全,如何在安全和便利之间平衡也是一件需要考虑的事情。

web应用开发者注意事项:

1.对于开发者,首先应该把精力放到对所有用户提交内容进行可靠的输入验证上。这些提交内容包括URL、查询关键

字、http头、post数据等。只接受在你所规定长度范围内、采用适当格式、你所希望的字符。阻塞、过滤或者忽略其它的

任何东西。

2.保护所有敏感的功能,以防被bots自动化或者被第三方网站所执行。实现session标记(session tokens)、

CAPTCHA系统或者HTTP引用头检查。

3.如果你的web应用必须支持用户提供的HTML,那么应用的安全性将受到灾难性的下滑。但是你还是可以做一些事来

保护web站点:确认你接收的HTML内容被妥善地格式化,仅包含最小化的、安全的tag(绝对没有JavaScript),去掉任何

对远程内容的引用(尤其是样式表和JavaScript)。为了更多的安全,请使用httpOnly的cookie。

XSS跨站脚本攻击在Java开发中防范的方法相关推荐

  1. 编写高质量代码:改善Java程序的151个建议 (第1章 Java开发中通用的方法和准则)

    第1章 Java开发中通用的方法和准则 The reasonable man adapts himself to the world;the unreasonable one persists in ...

  2. 防止XSS跨站脚本攻击:Java过滤器

    XSS问题描述 跨站脚本(Cross site script,简称xss)是一种"HTML注入",由于攻击的脚本多数时候是跨域的,所以称之为"跨域脚本". 我们 ...

  3. 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议1~5)...

                 The reasonable man adapts himself to the world; The unreasonable one persists in trying ...

  4. 01-第一章 Java开发中通用的方法和准则

    建议1:不用在常量和变量中出现易混淆的字母 包括名全小写,类名首字母全大写,常量全部大写并用下划线分割,变量采用驼峰命名法(Camel Case)命名等. 例如: package com.compan ...

  5. 转载----编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议1~5)...

    阅读目录 建议1:不要在常量和变量中出现易混淆的字母 建议2:莫让常量蜕变成变量 建议3:三元操作符的类型务必一致 建议4:避免带有变长参数的方法重载 建议5:别让null值和空值威胁到变长方法    ...

  6. java代码优化的方法和准则_编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)...

    建议16:易变业务使用脚本语言编写 Java世界一直在遭受着异种语言的入侵,比如PHP,Ruby,Groovy.Javascript等,这些入侵者都有一个共同特征:全是同一类语言-----脚本语言,它 ...

  7. 转载--编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议16~20)...

    阅读目录 建议16:易变业务使用脚本语言编写 建议17:慎用动态编译 建议18:避免instanceof非预期结果 建议19:断言绝对不是鸡肋 建议20:不要只替换一个类 回到顶部 建议16:易变业务 ...

  8. 编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议6~10)...

    建议6:覆写变长方法也循规蹈矩 在JAVA中,子类覆写父类的中的方法很常见,这样做既可以修正bug,也可以提供扩展的业务功能支持,同时还符合开闭原则(Open-Closed Principle). 符 ...

  9. 转载-----编写高质量代码:改善Java程序的151个建议(第1章:JAVA开发中通用的方法和准则___建议6~10)...

    阅读目录 建议6:覆写变长方法也循规蹈矩 建议7:警惕自增的陷阱 建议8:不要让旧语法困扰你 建议9:少用静态导入 建议10:不要在本类中覆盖静态导入的变量和方法 回到顶部 建议6:覆写变长方法也循规 ...

最新文章

  1. linux中python如何调用matlab的数据_?如何在Python中加入多个数据帧?
  2. boost::geometry::wkt用法的测试程序
  3. 网络安全-安全散列函数,信息摘要SHA-1,MD5原理
  4. java学习(36):数组排序
  5. python运行外部程序_在Python中运行外部程序(可执行文件)?
  6. 大兴新年大集 推10条文化旅游线
  7. spring boot shiro redis整合基于角色和权限的安全管理-Java编程
  8. U盘安装ubuntu server 10.4
  9. Linux环境下的jdk安装(大数据环境)
  10. MySQL(10)-----多表创建及描述表关系(一对多的分析和实现)
  11. java velocity 语法_Velocity的基本语法
  12. matlab解超越函数,矩阵的超越函数Matlab提供的矩阵函数.PPT
  13. 如何设置三线表线条的粗细
  14. 用python画一条虚线_Python3 tkinter基础 Canvas create_line 画实线与虚线
  15. criterion of IMAP4.search 限制规范
  16. vue项目屏幕自适应_vue项目自适应屏幕和浏览器
  17. mybatis一个怪异的问题: Invalid bound statement not found 作者及来源: babyblue - 博客园 收藏到→_→: 摘要: mybatis一个怪异
  18. SQL Server2012 提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法
  19. SAP 生产订单/工单状态说明
  20. 百度云for mac破解方法--获取无限svip

热门文章

  1. 用实例证明dll中new的内存不能在exe中释放
  2. C++ POD(Plain Old Data)类型
  3. 抖音xgorgon04参数
  4. python 下载拉钩教育AES加密视频
  5. RabbitMQ Network Partitions 服务日志对比
  6. [四]RabbitMQ-客户端源码之Frame
  7. C++中各种智能指针的实现及弊端(二)
  8. 李松南:智能全真时代的多媒体技术——关于8K、沉浸式和人工智能的思考
  9. 带你快速了解 Docker 和 Kubernetes
  10. 腾讯基于全时态数据库技术的数据闪回