什么是SQL注入、XSS和CSRF?
技术百科
青灯夜游
发布时间:2019-03-28
浏览: 次 什么是sql注入、xss和csrf?本篇文章就来带大家了解一下sql注入、xss和csrf,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
SQL注入
SQL注入是属于注入式攻击,这种攻击是因为在项目中没有将代码与数据(比如用户敏感数据)隔离,在读取数据的时候,错误的将数据作为代码的一部分执行而导致的。
典型的例子就是当对SQL语句进行字符串拼接的时候,直接使用未转义的用户输入内容作为变量。这时,只要在sql语句的中间做修改,比如加上drop、delete等关键字,执行之后后果不堪设想。
说到这里,那么该怎么处理这种情况呢?三个方面:
1、过滤用户输入参数中的特殊字符,降低风险。
2、禁止通过字符串拼接sql语句,要严格使用参数绑定来传入参数。
3、合理使用数据库框架提供的机制。就比如Mybatis提供的传入参数的方式 #{},禁止使用${},后者相当于是字符串拼接sql,要使用参数化的语句。
总结下,就是要正确使用参数化绑定sql变量。
XSS
XSS:跨站脚本攻击,Cross-Site Scripting,为了和前端的css避免重名,简称为XSS,是指通过技术手段,向正常用户请求的HTML页面中插入恶意脚本,执行。
这种攻击主要是用于信息窃取和破坏等目的。比如2011年的微博XSS攻击事件,攻击者利用了微博发布功能中未对action-data漏洞做有效的过滤,在发布微博信息的时候带上了包含攻击脚本的URL,用户访问就会加载恶意脚本,导致大量用户被攻击。
关于防范XSS上,主要就是通过对用户输入的数据做过滤或者是转义,可以使用框架提供的工具类HtmlUtil。另外前端在浏览器展示数据的时候,要使用安全的API展示数据。比如使用innerText而不是innerHTML。
CSRF
跨站请求伪造,在用户并不知情的情况下,冒充用户发送请求,在当前已经登录的web网站上执行恶意操作,比如恶意发帖,修改密码等。
大致来看,与XSS有重合
的地方,前者是黑客盗用用户浏览器中的登录信息,冒充用户去执行操作。后者是在正常用户请求的HTML中放入恶意代码,XSS问题出在用户数据没有转义,过滤;CSRF问题出现在HTTP接口没有防范不守信用的调用。
防范CSRF的漏洞方式:
1、CSRF Token验证,利用浏览器的同源限制,在HTTP接口执行前验证Cookie中的Token,验证通过才会继续执行请求。
2、人机交互,例如短信验证码、界面的滑块。
相关视频教程推荐:《MySQL教程》
以上就是本篇文章的全部内容,希望能对大家的学习有所帮助。更多精彩内容大家可以关注相关教程栏目!!!
# 是在
# 就会
# 上了
# 是因为
# 出现在
# 是指
# 对你
# 才会
# 绑定
# css
# http
# java
# html
# 字符串
# 接口
# 数据库
# 事件
# 要使
# delete
# Token
# php
# mysql
# sql
# csrf
# xss
# Cookie
# sql注入
# innerHTML
# mybatis
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何在 Go 中调用动态链接库(.so)中的函数
- c# 在ASP.NET Core中管理和取消后台任
- Windows10系统怎么查看CPU温度_Win1
- Mac如何开启夜览模式_Mac护眼模式设置与定时
- Win11怎么设置默认输入法 Win11固定中文输
- c++ std::future和std::prom
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- c++怎么实现大文件的分块读写_c++ 文件指针s
- Python对象比较与排序_魔术方法解析【教程】
- c++怎么使用std::filesystem遍历文
- Windows7怎么找回经典开始菜单_Window
- Win11关机快捷键是什么_Win11快速关机方法
- 如何使用Golang指针与结构体结合_修改结构体内
- 如何使用Golang table-driven基准
- ACF 教程:如何正确更新嵌套在多层 Group
- Win10怎样卸载TeamViewer_Win10
- php打包exe后无法读取环境变量_变量配置方法【
- Python正则表达式实战_模式匹配说明【教程】
- 如何使用Golang实现基本类型比较_Golang
- Win10如何更改网络连接_Windows10以太
- Win11怎么设置应用分屏_Windows11贴靠
- Windows10怎么用“讲述人”读屏辅助 Win
- C++中的constexpr和const有什么区别
- Windows 10怎么隐藏特定更新补丁_Wind
- Windows10如何更改开机密码_Win10登录
- Win11怎么关闭防火墙通知_屏蔽Win11安全中
- Python随机数生成_random模块说明【指导
- Win11怎么查看显卡显存_查询Win11显卡详细
- Win11怎么设置环境变量_Win11配置Path
- Win11怎么用设置清理回收站_Win11设置清理
- Django 密码修改后会话失效的解决方案
- 如何在Golang中处理二进制数据_Golang
- php485支持哪些操作系统_php485跨系统支
- 如何使用Golang捕获测试日志_Golang t
- php怎么下载安装后无法解析php文件_服务器配置
- Mac如何设置动态壁纸?(让桌面动起来)
- 如何在Golang中实现基础配置管理功能_Gola
- php能跑在stm32上吗_php在stm32微控
- Windows10如何更改系统字体大小_Win10
- 如何使用正则表达式批量替换重复的星号-短横模式为固
- Win11怎么恢复旧版开始菜单_通过软件还原Win
- c++如何判断文件是否存在_c++ filesys
- Win11怎么设置默认浏览器Chrome_Wind
- Win10怎样清理C盘阿里旺旺缓存_Win10清理
- Win11怎么把图标拖到任务栏_Win11固定应用
- Win11怎么关闭贴靠布局_Win11禁用窗口最大
- Windows11如何设置专注助手_Windows
- LINUX怎么设置系统语言_LINUX修改中文环境
- Win11右键反应慢怎么办 Win11优化右键菜单
- Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡

QQ客服