网站被黑数据泄露?SQL注入与XSS攻击防御方法亲测有用
网站遭遇数据被删、跳转恶意页面、用户信息泄露?大概率是SQL注入或XSS攻击导致!本文整理了可直接落地的防御手段,小白也能学会给网站做安全加固。
一、先搞懂什么是SQL注入攻击
简单说就是黑客利用网站没有对用户提交的数据做校验的漏洞,在输入框、url参数里插入恶意的SQL代码,欺骗服务器执行恶意的SQL语句,轻则拖走你的整个数据库用户信息,重则直接删掉整个库的数据。
我之前有个做本地生鲜电商的客户,刚上线的小程序后台没做校验,上线半个月就被人用SQL注入拖走了2万多用户的手机号和地址信息,还被勒索了5000块钱,后来花了好几万做用户安抚才解决,亏大了。
二、SQL注入的3个落地防御手段
🌟 1、必须用预处理语句,绝对不要拼接SQL
这是防SQL注入最有效的手段,不管你用什么开发语言,PHP用PDO预处理、Java用MyBatis预编译、Python用Django的ORM框架,只要不用字符串拼接的方式生成SQL语句,黑客就算输了恶意代码也会被当成普通参数处理,根本执行不了。
🌟 2、所有用户输入都做严格校验
不管是登录框的用户名密码、搜索框的关键词,还是url里的参数,全部要做校验:限制输入长度、用正则过滤特殊字符(单引号、分号、*、#这些SQL常用的特殊字符都要过滤),不符合规则的直接拒绝访问。
🌟 3、数据库账号用最小权限原则
别图省事给网站用root级别的数据库账号,就给对应业务需要的最小权限就行:比如普通业务账号就只给指定库的增删改查权限,绝对不给删库、建表、改权限的权限,就算真的被注入成功,黑客也搞不坏你的核心数据。
三、什么是XSS跨站脚本攻击
XSS就是黑客往你的网站里插入恶意的JS脚本代码,比如在评论区、个人简介这些用户可以提交内容的地方插代码,其他用户访问这个页面的时候,恶意脚本就会自动执行,要么偷用户的登录cookie直接盗号,要么强制跳转到诈骗、博彩站点,很多网站被微信封域名就是因为被插了XSS恶意脚本。
之前有个做职场干货的自媒体客户,网站评论区没做转义,被人插了XSS跳转代码,3天之内就被微信标记为恶意站点,之前积累的十几万搜索流量直接清零,花了快2个月才申诉回来。
四、XSS攻击的3个可落地防御手段
🌟 1、所有用户输入输出都做转义
只要是用户提交的内容,输出到前端页面的时候,一定要把< > ' " &这些特殊字符转义成HTML实体字符,比如把<转成<,这样浏览器就会把这些内容当成普通文本,不会解析成JS代码执行,从根源上堵死XSS的漏洞。
🌟 2、给Cookie加HttpOnly属性
给网站的用户登录Cookie加上HttpOnly属性,就算真的有恶意脚本被执行,也读不到用户的Cookie信息,黑客就没法盗走用户的登录状态,能把损失降到最低。
🌟 3、配置CSP内容安全策略
在服务器的响应头里加上CSP配置,限制你的网站只能加载你指定域名的脚本、图片、样式等资源,陌生域名的恶意脚本直接就会被浏览器拦截,就算被插了恶意代码也加载不出来。
最后再给大家提个醒:别随便用网上找不到源码的开源建站模板,很多都留了后门;每个月至少给网站做1次漏洞扫描,用阿里云安全中心、360网站安全检测这些免费工具就能扫,发现漏洞马上补,别等出事了才后悔。
参考内容来源:博客园