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

原文地址:https://www.cnblogs.com/lovele-/p/9225163.html