Web网站安全
一、防SQL注入
SQL注入,就是在web提交表单,请求参数的字符串中通过注入SQL命令,提交给服务器,从而让服务器执行注入的恶意的SQL命令的行为,是发生在开发程序的数据库层的安全漏洞。
SQl注入发生的原因:
1、对用户输入的数据没有进行过滤和校验
2、在开发中生成SQL语句的时候,采用的是拼接字符串的方法
3、应用程序连接操作数据库时使用的用户权限过大
SQL注入的解决方法:
1、对用户输入的数据保持警惕,对输入的数据进行检查,过滤
2、对SQL语句使用预编译手段,参数绑定,或者是使用PDO占位符进行转义
二、XSS攻击
XSS攻击,又称为跨站点脚本攻击,是web应用中最危险,最普遍的漏洞之一。它与SQL注入类似,SQL注入攻击是以用户输入的内容,提交给数据库服务器执行达到修改或删除数据的攻击,而XSS攻击则是通过往web页面中插入恶意脚本,比如javascrapt,HTML及其它开发语言脚本等,当用户访问该页面时,嵌入的恶意代码就会执行,从而达到攻击用户的目的。它是在网页客户端执行的一种攻击。
XSS攻击的种类:
XSS攻击种类大概分为三类,反射型XSS攻击(非持久性跨站攻击)、存储型XSS(持久性跨站攻击)、DOM Based XSS(基于dom的跨站点脚步攻击)。
反射型XSS攻击:一般是利用页面会直接输出请求参数的特性,通过在url的请求参数中包含恶意脚本,在用户打开url的时候,执行恶意脚本。
存储型XSS攻击:一般是通过表单输入插入一些恶意脚本,这些脚本会插入数据库中,在其它用户加载对应页面时,该脚本就会被加载执行。该类型XSS攻击最具危险性,因为它不只是影响一位用户,而是大量的用户,而且它还可以进行蠕虫传播。
DOM Based XSS:它是通过DOM来执行注入脚本的。采用这种方法在源代码中不容易被发现。
XSS攻击发生的原因:
1、没有对用户输入的数据和内容进行编码,过滤
2、因为这种攻击没有特定的方式,它存在很多变体,所以并不能设计出一个能完全防御XSS攻击的过滤器
XSS攻击的解决方法:
1、对用户输入的数据进行过滤,对其中的HTML标签及特殊符号进行转义,不过这种过滤方法会使富文本失去作用
2、使用白名单、黑名单的方法实现过滤
3、对用户提交的内容进行验证,并对用户的来源进行验证,如URL、关键字、HTTP头、POST数据等,只接收符合长度范围的,数据格式的字符进行提交,其它的一概过滤掉
下列一些函数可以对出现XSS漏洞的参数进行过滤
htmlspecialchars() //对在页面上显示的文本进行转义处理
htmlentities() //对在页面上显示的文本进行转义处理
strip_tags() //过滤掉输入、输出里面的恶意标签
header() //使用header("Content-type:application/json")
urlencode() //用于输出处理字符串型参数带入页面链接中
intval() //处理数值型参数输出到页面中
三、CSRF攻击
CSRF攻击,也叫跨站请求伪造(Cross-site request forgery)攻击,通常缩写为CSRF或XSRF,是一种对网站的恶意利用。它与XSS攻击类似,但又有本质上的区别,XSS主要是攻击站点内的信任用户,而CSRF则是通过伪装来自受信任用户的请求来利用受信任的网站。攻击者通过浏览器Cookie或服务器Session盗用普通用户的信息,以普通用户的身份伪造请求,对网站发送恶意请求,网站执行请求后引发跨站请求伪造攻击。CSRF盗用用户信息,代替用户进行操作,比如发送邮件,发表评论,购买商品,虚拟货币转帐,导致个人信息泄露和财产安全。
CSRF攻击的原理

CSCF攻击发生的原因:
服务器没有对请求的发源进行合理的检测,就对请求者进行响应,导致用户信息泄露给了攻击者。
CSRF攻击解决的方法:
1、对用户的请求验证HTTP Referer的值
2、使用请求令牌
四、DDOS流量攻击
DDOS攻击就是攻击者通过大量的合法的请求来访问网站,导致服务器无法接收普通用户的请求丢失正常的数据包,最终可能会导致网站服务器瘫痪无法进行工作。
DDOS攻击的预防方法:
1、关闭不必要的服务
2、限制同时打开的syn半连接数,并缩短syn半连接的 time out 时间
3、及时更新系统补丁,并采取有效的合规性配置,降低漏洞被利用的风险
4、采用分布式部署网站,负载均衡,提升系统容量等措施,总体增强网站的服务能力
5、把网站做成静态页面,将静态文件和动态文件部署到不同的服务器上,提高抗攻击能力,
参考:
https://blog.csdn.net/han_cui/article/details/61418484
https://blog.csdn.net/echo_laodong/article/details/79254552
Web网站安全的更多相关文章
- Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转
前言:最近这两天工作上,要实现一个功能,在好友阿聪的帮助下,算是比较好的解决了这个需求. B/S的Web网站,需要实现点击按钮时,根据客户端连接的显示屏(监视器)数量进行,单双屏跳转显示新页面. 由于 ...
- Web网站的几个并发量级
评价一个网站的“大小”,处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的.但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈谈几个Web网站的数 ...
- zabbix 监控web网站性能
一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...
- web网站的url设计
通常再web网站设计url时是按功能模块设计url,然后再control层一个功能模块对应一个control层类,每个control类中的方法映射相应的url请求. 如果遇见另一个功能模块需要实现同样 ...
- web网站 Vs 移动App 谁更能打动你?之 产品经理篇
从web1.0到web2.0,由单调变为丰富——无论是内容,呈现,还是用户交互,当我们(接触互联网只有五六年的人)可能还沉浸在这绚丽多彩,啧啧称奇web交互体验之中,移动App不知道在什么时候已经悄然 ...
- IIS7.5 在已有的WEB网站上配置FTP发布
IIS7.5 有了很多新特性,例如FashCGI,Rewrite 模块的内置,简易的FTP发布等等,但是即使是微软,也没有详细的文档,本文详细的介绍了如何在现有的WEB网站上建立FTP发布. IIS ...
- 3个常用基于Linux系统命令行WEB网站浏览工具(w3m/Links/Lynx)
一般我们常用的浏览器肯定是基于可视化界面的图文结合的浏览界面效果,比如FireFox.Chrome.Opera等等,但是有些时候折腾和项目 的需要,在Linux环境中需要查看某个页面的文字字符,我们需 ...
- 构架高性能WEB网站的几点知识
前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题. HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.h ...
- 通过JS语句判断WEB网站的访问端是电脑还是手机
通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! 目录腾讯网的适配代码如何判断访问网站的机器类型-如何判断ipadJS 判断浏览器客户端类型(ipad,iphone,android ...
- 【架构】浅谈web网站架构演变过程
浅谈web网站架构演变过程 前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变. 该系统具备的功能: 用户模块:用户注册和管理 商品模块:商品展示和管 ...
随机推荐
- dp基础√
1.重叠子问题 2.能从小问题推到大问题 Dp: 设计状态+状态转移 状态: 1.状态表示: 是对当前子问题的解的局面集合的一种(充分的)描述.(尽量简洁qwq) ◦ 对于状态的表示 ...
- Centos7Yum安装PHP7.2流程
Centos7Yum安装PHP7.21.安装源 安装php72w,是需要配置额外的yum源地址的,否则会报错不能找到相关软件包. php高版本的yum源地址,有两部分,其中一部分是epel-relea ...
- PHP 中一个 False 引发的问题,差点让公司损失一百万
PHP 中一个 False 引发的问题,差点让公司损失一百万 一.场景描述 上周我一个在金融公司的同学,他在线上写一个 Bug,差点造成公司损失百万.幸好他及时发现了这个问题并修复了.这是一个由 PH ...
- django后台返回html字段会产生XSS防护的解决方式
1.在前端模块里面写 {{ page_str|safe }} 2.在后端 from django.utils.safestring import mark_safe pake_str = mark_ ...
- 【COSMOS】跨链协议IBC概述
一.什么是IBC? IBC是链间通信协议的缩写(Inter-Blockchain Communication Protocol).通过数据包交换在多个不同的区块链网络之间转移数据和状态信息.最初的用途 ...
- Zookeeper入门概要
ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.ZooKeeper的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来,构成一个高效可靠的原语集 ...
- mybatis报错(三)报错Result Maps collection does not contain value for java.lang.Integer解决方法
转自:https://blog.csdn.net/zengdeqing2012/article/details/50978682 1 [WARN ] 2016-03-25 13:03:23,955 - ...
- VB中输入函数InputBox的用法
格式:InputBox(pronpt[,title][,default][,xpos,ypos]).其中的pronpt为窗口的提示词,title为输入窗口的标题,default为输入窗口的默认内容,x ...
- php sockets扩展安装
php sockets扩展安装 今天安装cacti发现需要php sockets扩展,而现在的lnmp没有安装,于是想到了phpzie工具安装扩展,安装方法如下: cd php-5.3.8/ext ...
- vue组件结构
1.组件结构 2.项目结构