快到国庆了而且今年又是60周年,各个政府网站也都开始对网站的安全、漏洞进行大规模的扫描,很不幸我们公司开发的一个政府网站被扫描出来存在SQL注入、XSS、CSRF等漏洞!网站是几年前采用PHP开发的,由于开发人员本身的安全意识不足,代码编写上不严谨,滥用$_REQUEST类变量等导致网站存在了很多的安全隐患。最近一直都在研究XSS攻击如何防范,由于研究的时间不长简单的总结了下防御办法。
如下表单
<form name="testform" method="post" action="news/comment.php">
<input type="text" name="userName">
<input type="hidden" name="test1" />
<input type="hidden" name="test2" />
</form>
如果在用户在输入用户时录入的数据为" /><script src=xxx></script>这样就会插入了恶意的脚本
解决办法:
1、对用户录入的数据进行类型和长度的验证,其它的包括对URL、查询关键字、HTTP头、get、post也需要进行可靠的输入验证,这样可以抵挡部分恶意的脚本,但是不能完全防住。
2、尽量采用POST方式而非GET方式提交表单;对”<”,”>”,”;”,”’”等字符做过滤;任何内容输出到页面之前都必须加以encode。对于Cookie 尽量避免直接泄露用户隐私,可以用cookie结合其它一些系统或用户信息来降低泄露后的危险。
3、这里要注意一下如果注入代码如<img src="javascript:alert('XSS')">这种需要把关键字去除如 src href 这些连接性的 发现没有带协议头的就需要帮助补充。而style 则需要重点处理 /**/ expression url,尽可能禁止style属性,将所有的样式都定义到CSS中。
4、尽量减少在客户端进行写document等敏感操作,重点关注以下方法
document.URL
document.URLUnencoded
document.location ()
document.referrer
window.location ()
document.create...()等
逐层进行过滤客户端、服务器端、数据库访问层,每一层都进行下数据的过滤尽量将危险控制在最低。
以上是对XSS攻击的一个简单总结,希望大家能够再多多补充。附一张扫描结果!
- 大小: 38.7 KB
分享到:
相关推荐
防止XSS攻击是保护Web应用安全的重要一环,对于任何Web开发者来说都是必备的知识。 一、XSS攻击类型 XSS攻击主要分为三类:反射型XSS、存储型XSS和DOM型XSS。 1. 反射型XSS:攻击者通过构造恶意链接,诱使用户点击...
亲测可用,中级漏洞,解决服务器段请求伪造 final String forURL = ESAPI.encoder().encodeForURL(url); restTemplate.exchange(forURL, HttpMethod.GET,new HttpEntity<String>(headers), List.class, params);
JSP Struts过滤xss攻击的解决办法 本方案采用struts2的拦截器过滤,将提交上来的参数转码来解决。 配置struts.xml extends=struts-default,> <!-- 配置拦截器 --> <!-- 定义xss拦截器 --> ...
【WEB前端常见受攻击方式及解决办法】 WEB前端的安全问题不容忽视,因为它直接影响到用户的个人信息安全和网站的正常运行。本文主要关注四种常见的攻击方式及其防范措施:SQL注入、跨站脚本攻击(XSS)、跨站请求...
本篇文章主要探讨了两个关键知识点:一是不能盲目信任用户输入,二是五种常见的ASP.NET安全缺陷及其解决办法。 首先,我们了解为什么不能盲目相信用户输入。Web应用程序常常依赖用户提供的数据来执行各种操作,如...
3. **安全性**:由于服务器直接返回可执行的JavaScript代码,存在被XSS攻击的风险。 4. **无错误处理**:如果服务器返回的不是预期的函数调用格式,前端无法捕获错误。 ### JSONP与CORS的区别 相比于JSONP,CORS...
- 在处理用户输入时,使用过滤函数如`filter_var`来预防XSS攻击。 - 在处理文件上传时,需要检查文件类型和大小限制,以防止恶意文件被上传。 - **示例代码**: ```php // 过滤用户输入 $username = filter_...
// 验证来源以防XSS攻击 iframe.style.height = event.data.height + 'px'; }, false); ``` 总的来说,解决Iframe自适应高度的问题,可以采用JavaScript监听加载事件、CSS布局或者跨域通信等多种方式,具体选择...
- **XSS攻击**:防止跨站脚本攻击,对用户输入进行HTML编码或使用验证控件。 - **CSRF攻击**:添加令牌验证,防止跨站请求伪造。 - **权限控制**:根据用户角色分配权限,限制敏感操作。 6. **性能调优** - **...
- **解决办法**: 使用CSRF令牌验证机制,确保每次敏感操作都携带一个唯一的令牌,并且该令牌必须与用户的会话状态相匹配。 #### 5. **认证误用 (Often Misused: Authentication)** - **定义**: 认证机制设计不当或...
允许跨域可能会使服务器暴露于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)等风险,因此在设置CORS时应谨慎考虑允许的源和方法。 总结,解决Ajax跨域问题有多种方法,选择哪种取决于项目需求和安全考虑。JSONP适用于...
asp.net中的请求验证特性提供了某一等级的保护措施防止XSS攻击,asp.net的请求验证是默认启动的。 这里给出不同版本.net的解决方法。 asp.net 2.0 通常解决办法 方案一: 将.aspx文件中的page项添加Validate...
- 输入验证:对用户输入进行过滤和验证,防止SQL注入和XSS攻击。 - 使用预处理语句防止SQL注入,使用htmlspecialchars防止XSS。 - 保持系统和PHP版本更新,及时修补安全漏洞。 7. **文件操作**: 文件上传时需...
防止sql注入最好的办法是对于提交后台的所有数据都进行过滤转义。 对于简单的情况,比如包含单引号’ , 分号;, <, >, 等字符可通过rewrite直接重订向到404页面来避免。 用rewrite有个前提需要知道,一般用rewrite...
8. **安全性**:在JSP开发中,要关注SQL注入、跨站脚本攻击(XSS)等安全问题。学习如何使用预编译语句防止SQL注入,以及如何对用户输入进行验证和过滤,是保障应用安全的重要步骤。 9. **性能优化**:减少JSP中的...
除了上述问题,还有其他安全问题需要注意,比如XSS(跨站脚本攻击)、命令注入、文件包含漏洞等。对于XSS,应始终对用户输入进行编码;命令注入则要求使用参数化的系统调用或者限制用户输入;文件包含漏洞可通过限制...
3. 验证码:虽然不是最有效的解决办法,但在某些场景下可以提高攻击者的成本。 4. Referer识别:检查HTTP头部中的Referer字段,确认请求来源的合法性。 ### 知识点四:文件上传漏洞及其防范 **定义:** 文件上传...
需要注意的是,将validateRequest设为false会降低安全性,因为这允许不受限制的输入,可能导致XSS攻击。 2、“在没有任何数据时进行无效的读取尝试” 当SQLDataReader返回无数据记录时,未进行数据存在性判断就尝试...