本文不是教你怎么防御, 是让你知道有这么一回事情。 安全的问题很深入, 知道有这些后,才能深入学习。
1. SQL Injection<SQL注入攻击>
在Java中, 使用PrepareStatment是不可能产生这样的攻击的, 通常这类攻击产生是由于程序员借助一些API,或者配置文件, 动态的修改SQL语句造成的。 如果程序员不对输入的参数不做检查或者转义编码, 就可能产生SQL攻击。 防范这个问题的最简单的办法是, 不要使用用户输入的参数组装SQL语句。 这可能有点凹口。 实际上这类问题通常发在类似的操作上, 使用like, order by等操作上。 这2个语句最容易产生SQL注入:
select * from table_a where table_a.col like '%$name$%'
如果用户输入: ';select * from sys
组装完SQL后, 变成了
select * from table_a where table_a.col like '%';select * from sys%'
所以, 后面的东西变成什么恶意的SQL, 那么问题就来了。 如果是DDL语句,后果自己想。
例子很多的, 但是, 一个原则, 不要动态的手动组装SQL语句。
2. XSS攻击<跨站脚本>: 攻击者在页面中注入具有恶意js或者html代码,从而完全控制用户浏览器。如果你的web应用必须支持用户提供的HTML,那么应用的安全性将受到灾难性的下滑。但是你还是可以做一些事来保护web站点:确认你接收的HTML内容被妥善地格式化,仅包含最小化的、安全的tag(绝对没有JavaScript),去掉任何对远程内容的引用(尤其是样式表和JavaScript)。
对于非HTML的输出, 必须使用HTML ESCAPED来转义输出内容。
3.安全控制
在很多网站上, 有很多UPDATE、 DELETE、INSERT的操作, 但是, 由于程序员的忽略, 这些操作没有限制用户操作权限。
比如 http://sdh5724.iteye.com/admin/blogs/deleteblog?id=12345
SQL 写成了 delete from blog where id=12345
那么有用户把12345 修改为 54321就可能删除别人的文章了。 这个安全因素在非常的网站都存在。从授权角度来来说, 这个SQL写成 delete from blog where id=12345 and memberid='sdh5724' 这样就安全了。
这个问题的变形是很多的。 开发的时候需要注意。
4. CSRF攻击,伪造客户端请求的一种攻击,CSRF的英文全称是Cross Site Request Forgery,字面上的意思是跨站点伪造请求
主要如下:
1. 没有验证用户http请求的方式 POST 或者 GET,GET请求被合法通过!
2. 没有验证表单来源的唯一性,不能识别是合法的表单提交还是黑客伪造的表单提交!
这个问题主要是要防止构造一个FORM表单提交,通过为FORM表单增加一个检查字段<session token>. 提交的时候, 确定该session token是否是该用户生产的。 session token可以保存在cache,数据库, 或者sesion中。
大约目前Web攻击就这些类型, 但是都是非常复杂的。 需要仔细的研究才能明白。说的解决办法都是简易的。 如果要一个完全的解决办法,最好咨询安全工程师或者小黑们。
分享到:
相关推荐
WEB开发中常见安全漏洞分析与预防策略
许多程序员不知道如何开发安全的应用程序,开发出来的Web应用存在较多的安全漏洞,这些安全漏洞一旦被黑客利用将导致严重甚至是灾难性的后果。这并非危言耸听,类似的网上事故举不胜举,的Web产品也曾多次遭黑客攻击...
把开发web应用的一些安全规则整理成一份安全规范,便于检查web开发。
web安全开发培训集合web安全开发培训集合
Web开发常见安全问题场景及解决方案
web 应用安全开发资料,很有价值的。
比较全面的一个关于Web开发安全技术的指导培训教程,分享出来给喜欢学习的小伙伴们
学会这些开发中的安全防范能让你在开发中避免很多的坑,减少程序的bug的产生
WEB安全,WEB安全规划,WEB安全架构,网站架构,网站改造,网站安全治理,web安全开发
本规范就是提供一套完善的、系统化的、实用的Web安全开发方法供Web研发人员使用,以期达到提高Web安全的目的。本规范主要包括三大内容:Web设计安全、Web编程安全、Web配置安全,配套CBB,多管齐下,实现Web应用的...
网站经常被人攻击。服务器安全,数据库安全,还有web开发程序上的安全都非常重要,此文档主要介绍程序方面的安全注意事项。
关于j2EE开发的常见安全问题。 关于j2EE开发的常见安全问题。
应用指导web应用程序开发,以减少系统的安全漏洞,提高安全性,该文档从各方面说明了设计开发是应该遵循的原则
《Java Web开发实战1200例(第2卷)》以开发人员在项目开发中经常遇到的问题和必须掌握的技术为核心,介绍了应用Java Web进行程序开发的各个方面的知识和技巧,主要内容包括流行组件应用、数据库应用、图表统计、Ajax...
Java Web开发实例大全(提高卷)筛选、汇集了Java Web开发从基础知识到高级应用各个层面的大量实例及源代码,共有600个左右,每个实例及源代码按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析...
在《Web开发敏捷之道:应用Rails进行敏捷Web开发(第3版)》中,你将可以…… ·跟随一个完整的教程,亲手编写一个基于web的在线商店; ·了解Rails如何消除烦人的配置与琐事; ·学会如何开发国际化的应用程序; ·...
下面列出了本书中涵盖的一些重要主题: ● 安全虽然防弹,但却难以使用,所以用户不愿意采用它。因此,设计和实施强大的、但对用户也友好的安全性非常重要。 ● 如何使电子商务和移动商务更安全;如何设计和实施它。...
web应用系统安全开发规范
Web开发安全
java web开发安全知识,非常详尽