sql注入 js脚本注入 html入侵(自己收集的一些解决方案)欢迎指正

来源:互联网 发布:百度淘宝联盟 编辑:程序博客网 时间:2024/06/05 09:57

sql注入 js脚本注入 html入侵

sql注入简介

通俗的讲,SQL注入就是恶意黑客或者竞争对手利用现有的B/S或者C/S架构的系统,将恶意的SQL语句通过表单等传递给后台SQL数据库引擎执行。比如,一个黑客可以利用网站的漏洞,使用SQL注入的方式取得一个公司网站后台的所有数据。试想一下,如果开发人员不对用户传递过来的输入进行过滤处理,那么遇到恶意用户的时候,并且系统被发现有漏洞的时候,后果将是令人难以想象的。最糟糕的是攻击者拿到了数据库服务器最高级的权限,可以对整个数据库服务器的数据做任何操作。

js脚本注入

JavaScript 中也有一些需要特殊处理的字符,如果直接将它们嵌入 JavaScript 代码中,JavaScript 程序结构将会遭受破坏,甚至被嵌入一些恶意的程序。

html入侵

由于 HTML 网页本身就是一个文本型结构化文档,如果直接将这些包含了 HTML 特殊字符的内容输出到网页中,极有可能破坏整个 HTML 文档的结构。所以,一般情况下需要对动态数据进行转义处理,使用转义序列表示 HTML 特殊字符

解决方案

sql注入解决方案

  • **第一种:
    使用预编译,在编写底层代码时能使用预编译的时候,一定要选择预编译。
  • **第二种:
    如果要使用拼接,可以对可能产生sql注入的特殊字符进行转义存储。
public static String decodeSpecialCharsWhenLikeUseBackslash(String content)    {        // 单引号是oracle字符串的边界,oralce中用2个单引号代表1个单引号        String afterDecode = content.replaceAll("'", "''");        // 由于使用了/作为ESCAPE的转义特殊字符,所以需要对该字符进行转义        // 这里的作用是将"a/a"转成"a//a"        afterDecode = afterDecode.replaceAll("/", "//");        // 使用转义字符 /,对oracle特殊字符% 进行转义,只作为普通查询字符,不是模糊匹配        afterDecode = afterDecode.replaceAll("%", "/%");        // 使用转义字符 /,对oracle特殊字符_ 进行转义,只作为普通查询字符,不是模糊匹配        afterDecode = afterDecode.replaceAll("_", "/_");        return afterDecode;    }

针对sql的关键词 目前我的做法是使用拦截器,拦截参数,检测内容,不包含关键字允许执行,包含关键字提示重新输入。
- **第三种:
使用框架,很多框架都有防止sql注入的功能,比如mybatis
js注入和html入侵
第一种方式:转义存储,可以参考spring 框架针对这些特殊字符的转义写法,HtmlUtils 和 JavaScriptUtils这个类。并且对一些保留字进行过滤例如”script”,”alert”
第二种方式:在前台对用户输入进行正则表达过滤,有特殊字符的和保留字的一概过滤,重新输入(不太适合实际需求)
收集的一些连接(比较详细)
http://www.tuicool.com/articles/MzIVZf
http://www.imooc.com/article/6137
http://blog.csdn.net/bcqtt/article/details/51670457

0 0