一、防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网站安全的更多相关文章

  1. Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转

    前言:最近这两天工作上,要实现一个功能,在好友阿聪的帮助下,算是比较好的解决了这个需求. B/S的Web网站,需要实现点击按钮时,根据客户端连接的显示屏(监视器)数量进行,单双屏跳转显示新页面. 由于 ...

  2. Web网站的几个并发量级

    评价一个网站的“大小”,处于视角的不同,有很多种衡量的方法,类似文章数,页面数之类的数据非常明显,也没有什么可以争议的.但对于并发来说,争议非常之多,这里就从一个技术的角度开始,谈谈几个Web网站的数 ...

  3. zabbix 监控web网站性能

    一直在纠结用什么实例来给大家演示呢?想来想去还是官方的好,那我们怎么用zabbix监控web性能和可用性呢?我们这边分为几个步骤:打开网站.登陆.登陆验证.退出,一共4个小step,看实例. 检测流程 ...

  4. web网站的url设计

    通常再web网站设计url时是按功能模块设计url,然后再control层一个功能模块对应一个control层类,每个control类中的方法映射相应的url请求. 如果遇见另一个功能模块需要实现同样 ...

  5. web网站 Vs 移动App 谁更能打动你?之 产品经理篇

    从web1.0到web2.0,由单调变为丰富——无论是内容,呈现,还是用户交互,当我们(接触互联网只有五六年的人)可能还沉浸在这绚丽多彩,啧啧称奇web交互体验之中,移动App不知道在什么时候已经悄然 ...

  6. IIS7.5 在已有的WEB网站上配置FTP发布

    IIS7.5 有了很多新特性,例如FashCGI,Rewrite 模块的内置,简易的FTP发布等等,但是即使是微软,也没有详细的文档,本文详细的介绍了如何在现有的WEB网站上建立FTP发布. IIS ...

  7. 3个常用基于Linux系统命令行WEB网站浏览工具(w3m/Links/Lynx)

    一般我们常用的浏览器肯定是基于可视化界面的图文结合的浏览界面效果,比如FireFox.Chrome.Opera等等,但是有些时候折腾和项目 的需要,在Linux环境中需要查看某个页面的文字字符,我们需 ...

  8. 构架高性能WEB网站的几点知识

    前言: 对于构架高性能的web网站大家都很感兴趣,本文从几点粗谈高性能web网站需要考虑的问题. HTML静态化 什么是html静态化? 说得简单点,就是把所有不是.htm或者.html的页面改为.h ...

  9. 通过JS语句判断WEB网站的访问端是电脑还是手机

    通过JS语句判断WEB网站的访问端是电脑还是手机,以显示不同的页面! 目录腾讯网的适配代码如何判断访问网站的机器类型-如何判断ipadJS 判断浏览器客户端类型(ipad,iphone,android ...

  10. 【架构】浅谈web网站架构演变过程

    浅谈web网站架构演变过程   前言 我们以javaweb为例,来搭建一个简单的电商系统,看看这个系统可以如何一步步演变.   该系统具备的功能:   用户模块:用户注册和管理 商品模块:商品展示和管 ...

随机推荐

  1. abstract关键字及static关键字

    抽象关键字abstract 抽象类 在类前加上关键字abstract可以将此类变成抽象类.抽象类不允许通过new关键字实例化,但是可一通过其子类向上转型为其创建实例. 抽象类可以有抽象方法,也可以没有 ...

  2. 【PDF】手写字与识别字重叠

    [PDF]手写字与识别字重叠 前言 同学平时上课用iPad记笔记,考试之前导出为PDF发给我后,我用PDF打开,发现可以直接Ctrl+F搜索一些词语.一直不知道是怎么做到的,毕竟里面的字都是手写的,不 ...

  3. E - 盒子游戏

    有两个相同的盒子,其中一个装了n个球,另一个装了一个球.Alice和Bob发明了一个游戏,规则如下:Alice和Bob轮流操作,Alice先操作每次操作时,游戏者先看看哪个盒子里的球的数目比较少,然后 ...

  4. MATLAB图像的代数运算

    1.图像旋转与缩放 bm=imread("3.png"); %subplot(1,3,1); imshow(bm); %缩放图片 %bt=imresize(bm,0.5,'near ...

  5. Android数据库使用指南(下)

    前言 上面已经说了,对表进行修改,其实就是对数据库进行升级,删除表也算升级啊,反正就是发生变化,数据库就需要升级. 所以老实说其实有个地方决定了数据库的版本 public class DBHelper ...

  6. Python 操作sqlite数据库及保存查询numpy类型数据(二)

    # -*- coding: utf-8 -*- ''' Created on 2019年3月6日 @author: Administrator ''' import sqlite3 import nu ...

  7. fpga为什么要用nios 开发

    同一个项目可以用NIOS2也可以不用就可以完成,这句话说对也可以说不对,这要看是一个什么样的项目,你那样问的话可就说明有CPU和没CPU下的使用情况你还没有搞清楚,这两者并没有完全分开,简单的说就是有 ...

  8. 分分钟轻松搞定IBM系列 RAID5搭建

    分分钟轻松搞定IBM系列 RAID5搭建 按照 以下图片步骤一步步可轻松完成IBM服务器RAID1.5.10等的搭建. 此例是以RAID5为例,RAID1和10可举一反三.

  9. Linux包安装及搭建服务

    IP地址:以·分隔成4部分,每部分在底层是以8位二进制存储 例:172.16.45.10/16(后面是子网掩码,表示网络地址是前面16位二进制) 网路地址:172.16.00 主机地址:172.16. ...

  10. Codeforces 939 时区模拟 三分

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...