zl程序教程

您现在的位置是:首页 >  前端

当前栏目

经常遇到的3大Web安全漏洞防御详解

Web 详解 遇到 防御 安全漏洞 经常
2023-06-13 09:12:24 时间

程序员需要掌握基本的web安全知识,防患于未然,你们知道有多少种web安全漏洞吗?这里不妨列举10项吧,你们可以自己去网站找相应的教程来提升自己的 1、命令注入(Command Injection) 2、eval注入(Eval Injection) 3、客户端脚本攻击(Script Insertion) 4、跨网站脚本攻击(Cross Site Scripting, XSS) 5、SQL注入攻击(SQL injection) 6、跨网站请求伪造攻击(Cross Site Request Forgeries, CSRF) 7、Session 会话劫持(Session Hijacking) 8 Session 会话固定(Sessionfixation) 9、HTTP响应拆分攻击(HTTP Response Splitting) 10、文件上传漏洞(File Upload Attack)

这篇文章主要给大家介绍最经常遇到的3个:XXS,CSRF, SQL注入。 一、XSS漏洞 1.XSS简介 XSS(Cross Site Scripting),意为跨网站脚本攻击,为了和样式表css(Cascading Style Sheet)区别,缩写为XSS。攻击者主要使用跨站点脚本来读取Cookie或网站用户的其他个人数据。 一旦攻击者获得了这些数据,他就可以假装是该用户登录网站并获得该用户的权限。

2.跨站点脚本攻击的一般步骤 1,攻击者以某种方式将xss http链接发送给目标用户 2.目标用户登录该网站并打开攻击者在登录过程中发送的xss链接。 3.网站执行了这个xss攻击脚本 4.目标用户页面跳转到攻击者的网站,攻击者获得了目标用户的信息 5.攻击者使用目标用户的信息登录网站以完成攻击

3. XSS攻击的危险 1.窃取用户信息,例如登录帐户,网上银行帐户等。 2.使用用户身份读取,篡改,添加,删除公司敏感数据等 3.重要商业价值数据的盗窃 4.非法转移 5.强制电子邮件 6.网站挂马 7,控制受害者的机器对其他网站发起攻击

4.防止XSS解决方案 1)XSS的根本原因是客户端提交的数据未完全过滤,因此重点是过滤用户提交的信息。 2)将重要的cookie标记为http only,因此js中的document.cookie语句将不会获取cookie。 3)仅允许用户输入我们期望的数据。 例如:年龄 age只允许用户输入数字,数字外的字符被过滤掉。 4)对数据进行Html编码处理:当用户提交数据时,将其进行HTML编码,并且在下一次处理之前,将相应的符号转换为实体名称。 5)过滤或删除特殊的HTML标签,例如:<script>,<iframe>,<for <,> for>, 6)过滤js事件的标签。例如 "onclick=", "onfocus" 等等。

二、CSRF攻击(跨站点请求伪造) 1.CSRF简介 CSRF(Cross Site Request Forgeries),意为跨网站请求伪造,也有写为XSRF。攻击者伪造目标用户的HTTP请求,然后此请求发送到有CSRF漏洞的网站,网站执行此请求后,引发跨站请求伪造攻击。攻击者利用隐蔽的HTTP连接,让目标用户在不注意的情况下单击这个链接,由于是用户自己点击的,而他又是合法用户拥有合法权限,所以目标用户能够在网站内执行特定的HTTP链接,从而达到攻击者的目的。

2.CSRF攻击的危害 主要危害来自攻击者窃取用户身份并发送恶意请求。 例如:模拟用户的行为,以发送电子邮件,发送消息以及保护诸如付款和转账之类的财产。

例如:某个购物网站购买商品时,采用http://www.shop.com/buy.php?item=watch&;num=1,item参数确定要购买什么物品,num参数确定要购买数量,如果攻击者以隐藏的方式发送给目标用户链接 那么如果目标用户不小心访问以后,购买的数量就成了1000个。

3.防止CSRF的解决方案 1)POST用于接收重要的数据交互。 当然,POST不是万能药。 锻造形式可能会破裂。 2)使用验证码。 只要涉及数据交互,请首先验证验证码。 这种方法可以完全解决CSRF。 但是,出于用户体验的考虑,网站无法向所有操作添加验证码。 因此,验证码只能用作辅助方法,而不能用作主要解决方案。 3)验证HTTP Referer字段,该字段记录HTTP请求的源地址。 最常见的应用是图片防盗链。 4)为每个表单添加令牌并进行验证。

三、SQL注入攻击(SQL injection) 1 SQL注入 所谓的SQL注入攻击,即当某些程序员编写代码时,他们没有判断用户输入数据的合法性,这使应用程序成为潜在的安全隐患。 用户可以提交一段数据库查询代码,并根据程序返回的结果获取一些他想知道的数据。

SQL注入攻击是一种攻击者,他以某种形式提交精心构造的sql语句并更改原始sql语句。 如果Web程序未检查提交的数据,将导致SQL注入攻击。

2 SQL注入攻击的一般步骤: 1)攻击者访问带有SQL注入漏洞的站点,并寻找注入点 2)攻击者构造注入语句,并将注入语句与程序中的SQL语句组合以生成新的SQL语句 3)将新的SQL语句提交到数据库进行处理 4)数据库执行新的SQL语句,引起SQL注入攻击

3 防止SQL注入的方式 通常,SQL注入的位置包括: 1)表单提交,主要是POST请求,包括GET请求; 2)URL参数提交,主要是GET请求参数; 3)提交Cookie参数; 4)HTTP请求标头中的一些可修改值,例如Referer,User\_Agent等;

4.举例 举一个简单的例子,select * from user where id=100 ,表示查询id为100的用户信息,如果id=100变为 id=100 or 2=2,sql将变为:select * from user where id=100 or 2=2,将把所有user表的信息查询出来,这就是典型的sql注入。

5.防止SQL注入的解决方案 1)验证用户的输入并使用正则表达式过滤传入的参数 2)使用参数化语句,不拼接SQL,也可以使用安全存储过程 3)不要对每个应用程序使用具有管理员特权的数据库连接,而对特权限制使用数据库连接 4)检查数据存储类型 5)重要信息必须加密