简单总结下,java开发者至少需要了解这几个基本的方面。这样你的代码更安全


1. SQL注入:

            概念:意思是不要让SQL里面的参数是含有表达式的,

            现象:比如select * from user where name=${name},要是攻击者把name传test;union select * from role;

            解决方法:

                         禁止在ibatis里面使用${name}格式参数,必须使用#{name}格式,#是不能传表达式的SQL的


2. 钓鱼网站:

HelloWorld.action?redirect:http://www.恶意网站.com

redirect的话,那点击这个url就可能恶意网站去了,因为用户一般只看前面的地址以为是淘宝的。

     解决方法:

taobao.com屏蔽redirect的功能(strust有这个问题)


3.XSS攻击:

          实例:攻击者在页面的输入些js脚本,然后这个网站没有做字符判断就都保存了,然后其他人进入这个页面就会自动执行这个里面的JS脚本。。这个脚本执行恶意的程序,比如去访问某个银行给某个账户加钱,当然这个前提是这个这个用户之前登陆在银行网站上面,而且没有退出,cookie有效

        解决方法:

                用户输入的内容做判断,过滤相关JS代码,比如<script> <onlick>等

                用户输入的内容转码 decode下


4. csrf攻击:

           实例:某个用户在邮件中收到恶意邮件点击了相关url,这个url里面包括相关恶意代码,去访问某个银行的汇款接口,给某个指定账户加钱,这个前提是这个用户现在还登录在银行系统上,本地cookie没有失效

      解决方法:

           我之前文章里面有,这里列举下最常用的

       1. 银行网站应该判断请求方的head的Referer参数,看是否来自本银行的url

          2. token:请求道银行的时候,银行判断客户端是否带有正确的token,这个token存在session里面,所以这里要求银行的汇款页面请求时候带上这csrfToken。