本文目录一览:
- 1、如何使用 HTTP 响应头字段来提高 Web 安全性
- 2、什么是xss攻击?
- 3、java web开发如何有效的防止xss攻击
- 4、用JAVA做一个网站,现在要做防止XSS攻击,请问怎么防止这种攻击
如何使用 HTTP 响应头字段来提高 Web 安全性
在 Web 服务器做出响应时,为了提高安全性,在 HTTP 响应头中可以使用的各种响应头字段。
X-Frame-Options
该响应头中用于控制是否在浏览器中显示 frame 或 iframe 中指定的页面,主要用来防止 Clickjacking (点击劫持)攻击。
X-Frame-Options: SAMEORIGIN
DENY 禁止显示 frame 内的页面(即使是同一网站内的页面)
SAMEORIGIN
允许在 frame 内显示来自同一网站的页面,禁止显示来自其他网站的页面
ALLOW-FROM origin_uri 允许在 frame 内显示来自指定 uri 的页面(当允许显示来自于指定网站的页面时使用)
X-Content-Type-Options
如果从 script 或 stylesheet 读入的文件的 MIME 类型与指定 MIME 类型不匹配,不允许读取该文件。用于防止 XSS 等跨站脚本攻击。
X-Frame-Options: nosniff
X-XSS-Protection
用于启用浏览器的 XSS 过滤功能,以防止 XSS 跨站脚本攻击。
X-XSS-Protection: 1; mode=block
0 禁用 XSS 过滤功能
1 启用 XSS 过滤功能
Content-Security-Policy
用于控制当外部资源不可信赖时不被读取。用于防止 XSS 跨站脚本攻击或数据注入攻击(但是,如果设定不当,则网站中的部分脚本代码有可能失效)。
之前的字段名为 X-Content-Security-Policy
Content-Security-Policy: default-src 'self'
default-src ‘self’:允许读取来自于同源(域名+主机+端口号)的所有内容
default-src ‘self’
*.example.com:允许读取来自于指定域名及其所有子域名的所有内容
X-Permitted-Cross-Domain-Policies
用于指定当不能将地crossdomain.xml地文件(当需要从别的域名中的某个文件中读取 Flash 内容时用于进行必要设置的策略文件)放置在网站根目录等场合时采取的替代策略。
X-Permitted-Cross-Domain-Policies: master-only
master-only 只允许使用主策略文件(/crossdomain.xml)
Strict-Transport-Security
用于通知浏览器只能使用 HTTPS 协议访问网站。用于将 HTTP 网站重定向到 HTTPS 网站。
Strict-Transport-Security: max-age=31536; includeSubDomains
max-age 用于修改 STS 的默认有效时间。
includeSubDomains 用于指定所有子域名同样使用该策略。
Access-Control-Allow-Origin等CORS相关字段
当使用 XMLHttpRequest 从其他域名中获取资源进行跨域通信时使用。
Access-Control-Allow-Origin:
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: X-TRICORDER
Access-Control-Max-Age: 1728
上述代码用于设定与 进行跨域通信处理,允许使用 POST, GET, OPTIONS 方法,在发送的请求头中添加 X-TRICORDER 字段,通信超时时间为1,728,00秒。
HTTP响应头的设定方法
在 Apache 服务器中指定响应头时,需要在 httpd.conf 文件中将下述模块设定为有效状态。
LoadModule headers_module modules/mod_headers.so
然后使用下述方法设定 HTTP 响应头。
Header set HeaderFieldName "value"
//例如
Header set X-XSS-Protection "1; mode=block地
什么是xss攻击?
一、什么是跨站脚本攻击
跨站脚本攻击(Cross Site Scripting)缩写为CSS,但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。通常将跨站脚本攻击缩写为XSS。
跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞。这类漏洞能够使得攻击者嵌入恶意脚本代码到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意脚本代码的执行,从而达到恶意攻击用户的目的。
二、跨站脚本攻击的种类
从攻击代码的工作方式可以分为三个类型:
1、持久型跨站:最直接的危害类型,跨站代码存储在服务器(数据库)。
2、非持久型跨站:反射型跨站脚本漏洞,最普遍的类型。用户访问服务器-跨站链接-返回跨站代码。
3、DOM跨站(DOM XSS):DOM(document object model文档对象模型),客户端脚本处理逻辑导致的安全问题。
三、跨站脚本攻击的手段和目的
常用的XSS攻击手段和目的有:
1、盗用cookie,获取敏感信息。
2、利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
3、利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
4、利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
5、在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
四、跨站脚本攻击的防御
XSS攻击主要是由程序漏洞造成的,要完全防止XSS安全漏洞主要依靠程序员较高的编程能力和安全意识,当然安全的软件开发流程及其他一些编程安全原则也可以大大减少XSS安全漏洞的发生。这些防范XSS漏洞原则包括:
1、不信任用户提交的任何内容,对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、REFER、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。尽量采用POST而非GET提交表单;对“”,“”,“;”,“””等字符做过滤;任何内容输出到页面之前都必须加以en-code,避免不小心把htmltag显示出来。
2、实现Session 标记(session tokens)、CAPTCHA(验证码)系统或者HTTP引用头检查,以防功能被第三方网站所执行,对于用户提交信息的中的img等link,检查是否有重定向回本站、不是真的图片等可疑操作。
3、cookie 防盗。避免直接在cookie中泄露用户隐私,例如email、密码,等等;通过使cookie和系统IP绑定来降低cookie泄露后的危险。这样攻击者得到的cookie没有实际价值,很难拿来直接进行重放攻击。
4、确认接收的内容被妥善地规范化,仅包含最小的、安全的Tag(没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript),使用HTTPonly的cookie。
java web开发如何有效的防止xss攻击
配置过滤器,再实现 ServletRequest 的包装类。
将所有的编程全角字符的解决方式。首先添加一个jar包:commons-lang-2.5.jar ,然后在后台调用函数。
用JAVA做一个网站,现在要做防止XSS攻击,请问怎么防止这种攻击
过滤特定符号pre t="code" l="java" public static String guolv(String a) {
a = a.replaceAll("%22", "");
a = a.replaceAll("%27", "");
a = a.replaceAll("%3E", "");
a = a.replaceAll("%3e", "");
a = a.replaceAll("%3C", "");
a = a.replaceAll("%3c", "");
a = a.replaceAll("", "");
a = a.replaceAll("", "");
a = a.replaceAll("\"", "");
a = a.replaceAll("'", "");
a = a.replaceAll("\\+", "");
a = a.replaceAll("\\(", "");
a = a.replaceAll("\\)", "");
a = a.replaceAll(" and ", "");
a = a.replaceAll(" or ", "");
a = a.replaceAll(" 1=1 ", "");
return a;
}