浅谈SQL注入,XSS攻击

作为计算机小白,一直都认为黑客很牛逼所以简单的了解一下这反面的知识——信息安全
黑客是个英译词,译作Hacker。黑客攻击或者黑计算机的方式多种多样,主要分为两种:
(1)非破坏性的攻击:一般是为了扰乱系统的运行,并不盗窃系统资料,仅仅只是使服务器暂时失去对外提供服务的能力,通常采用拒绝服务攻击或信息炸弹
(2)破坏性攻击:是以侵入他人电脑系统、盗窃系统保密信息、破坏目标系统的数据为目的
常见的攻击有DDOS,CSRF,Dos等,通常通过的途径有病毒式,洪水式,系统漏洞等。
下面简单的介绍几种

SQL注入

常见的注入式攻击,通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句添加链接描述
造成可以进行SQL注入的本质原因就是未将代码与数据进行严格的隔离,导致用户在读取数据的时候,错误的把数据作为代码的一部分执行。
下面举个简单的例子:

var testCondition;
testCondition = Request.from("testCondition")
var sql ="select * from TableA where id='"+ testCondition +"'";

在上面的例子当中,如果用户输入的ID只是一个数字当然没有任何问题,但是如果用“;‘隔开后,在testCondition里面插入其他SQL语句,则会出现意想不到的结果。例如输入drop,delete等。例如你不小心输入"#–!#@"这样的字符然后保存使得数据库跟新就会使where后面的信息被注释掉了,执行语句就变成了

updata table set memo=""# --! #(@" where use_id=xxxxxxx;

使得全数据库的memo字段的数据都被跟新了,而不是你一个人的数据。
下面有几个兄弟写的很详细,大家可以去看看
(1)最详细的SQL注入教程–易利伟
(2)web完全篇之SQL
(3)SQL注入攻击
(4)用sql注入攻破网站
大家可以找个一个肉鸡网站去试试或者自己写一个肉鸡网站也是个不错的选择
SQL注入的危害极大,在进行程序设计时我们可以从下面几个方面进行预防

(1)过滤用户输入参数中的特殊字符,从而降低被SQL注入的风险
(2)禁止使用字符串拼接的SQL语句,严格使用参数绑定传入的SQL参数
(3)合理使用数据库访问框架提供的防注入机制

xss攻击

    XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets,CSS)
 的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安全漏洞,
 它允许恶意web用户将代码植入到提供给其它用户使用的页面中。即黑客通过技术手段向
 正常用户请求的HTML页面中插入恶意脚本,从而可以执行任意脚本
xss的分类

(1)反射型XSS

   恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来
实施攻击的。

(2)存储型XSS

     恶意代码被保存到目标网站的服务器中,这种攻击具有较强的稳定性和持久性,比较
常见场景是在博客,论坛等社交网站上,但OA系统,和CRM系统上也能看到它身影,比如某
CRM系统的客户投诉功能上存在XSS存储型漏洞,黑客提交了恶意攻击代码,当系统管理员
查看投诉信息时恶意代码执行,窃取了客户的资料,然而管理员毫不知情,这就是典型的
XSS存储型攻击。

(3) DOM型XSS

其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。

比如在2011年微博左右XSS蠕虫攻击事件,攻击者就利用微博发布功能中未对action-data漏洞做有效的过滤,在发布微博信息的时候戴上了包含攻击脚本的URL,用户访问该微博是便疯狂加载恶意脚本,该脚本会让用户以自己的账号自动转发同一条微博,通过这样的病毒式扩散,大量用户受到攻击。
下面举个简单的实例可能会导致反射型XSS的文件:

<div>
<h3>反射型XSS实例</h3>
<br>用户:<%=request.getParamer("useName")%>
<br>系统错误信息:<%=request.getParamer("errorMessage")%>
<div>

上面的代码从HTTP请求中取得了userName和errorMessage两个参数,并直接输出到HTML中用于展示,当构造这样一种URL时就出现了反射型XSS,用户便会执行脚本文件

http://xss.demo/self-xss.jsp?userName=666<script>alert("666")</script>
&errorMessage=XSS实例<script scr=http://hacker.demo/xss-script.js>
XSS攻击的预防主要是通过对用户的输入数据进行过滤和转义,如使用jsonp框架对用户输入的字符串作XSS过滤,使用Sping框架中的HtmlUtils对用户输入的字符串做html转义等

下面是几篇写的较为详细的XSS攻击博客
(1)web安全之XSS攻击
(2)XSS跨站脚本攻击
(3)XSS防御方法
(4)浅谈XSS攻击原理
时间匆匆而逝,下次我再来分享一点点关于第三种黑客攻击:CSRF的知识

猜你喜欢

转载自blog.csdn.net/qq_41606378/article/details/88848792