web security

关胜
• 阅读 1361

常见web安全及防护原理

  • sql注入原理

    • 就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令
  • 总的来说有以下几点

    • 永远不要信任用户的输入,要对用户的输入进行校验,可以通过正则表达式,或限制长度,对单引号和双"-"进行转换等
    • 永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询存取
    • 永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接
    • 不要把机密信息明文存放,请加密或者hash掉密码和敏感的信息

XSS原理及防范

  • Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码。比如:攻击者在论坛中放一个看似安全的链接,骗取用户点击后,窃取cookie中的用户私密信息;或者攻击者在论坛中加一个恶意表单,当用户提交表单的时候,却把信息传送到攻击者的服务器中,而不是用户原本以为的信任站点

XSS防范方法

  • 首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击

XSS与CSRF有什么区别吗?

  • XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。要完成一次CSRF攻击,受害者必须依次完成两个步骤
  • 登录受信任网站A,并在本地生成Cookie
  • 在不登出A的情况下,访问危险网站B

CSRF的防御

  • 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数
  • 通过验证码的方法

是否了解 Web 注入攻击(最常见 XSS 和 CSRF)?

  • SQL注入

    • 把SQL命令插入到表单或输入URL查询字符串提交,欺骗服务器达到执行恶意的SQL目的
  • XSS(Cross Site Script),跨站脚本攻击

    • 攻击者在页面里插入恶意代码,当用户浏览该页之时,执行嵌入的恶意代码达到攻击目的
  • CSRF(Cross Site Request Forgery),跨站点伪造请求

    • 伪造合法请求,让用户在不知情的情况下以登录的身份访问,利用用户信任达到攻击目的

如何防范 Web 前端攻击?

  • 不要信任任何外部传入的数据

    • 针对用户输入作相关的格式检查、过滤等操作
  • 不要信任在任何传入的第三方数据

    • 使用 CORS,设置 Access-Control-Allow-Origin
  • 更安全地使用 Cookie

    • 设置Cookie为HttpOnly,禁止了JavaScript操作Cookie
  • 防止网页被其他网站内嵌为iframe

    • 服务器端设置 X-Frame-Options 响应头,防止页面被内嵌
点赞
收藏
评论区
推荐文章
Irene181 Irene181
4年前
手把手教你用Python轻松玩转SQL注入
前言大家好,我是黄伟。相信大家经常有听到过SQL注入啥的,但是并不是特别了解;小编以前就是经常听别人说,但是自己啥都不懂,直到后来看了相关教材后才明白,原来是这么个东西,那么到底是什么东西了,又或者是不是个东西了?我们接着往下看。一、浅谈SQL注入SQL注入其实就是把SQL命令插入到WEB表单中提交或者输入一些页面请求的查询字符串,比如我们输网址,就是相
Wesley13 Wesley13
3年前
SQL注入之PHP
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。具体来说,它是利用现有应用程序,将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句。比如先前的很多影视网站泄
Wesley13 Wesley13
3年前
java持久层框架mybatis如何防止sql注入
sql注入大家都不陌生,是一种常见的攻击方式,攻击者在界面的表单信息或url上输入一些奇怪的sql片段,例如“or‘1’’1’”这样的语句,有可能入侵参数校验不足的应用程序。所以在我们的应用中需要做一些工作,来防备这样的攻击方式。在一些安全性很高的应用中,比如银行软件,经常使用将sql语句全部替换为存储过程这样的方式,来防止sql注入,这当然是一种很安全
Wesley13 Wesley13
3年前
SQL数据库常见问题解答及万能密码注入原理讲解[图]
SQL数据库常见问题解答及万能密码注入原理讲解\图\【万能密码】的原理用户进行用户名和密码验证时,网站需要查询数据库。查询数据库就是执行SQL语句。针对此BBS论坛,当用户登录时,后台执行的数据库查询操作(SQL语句)是【Selectuserid,usertype,emailFromusersWhereuserid’用户名’
Wesley13 Wesley13
3年前
PHP安全性防范方式
<h2SQL注入</h2<pSQL注入是一种恶意攻击,用户利用在表单字段输入SQL语句的方式来影响正常的SQL执行。</p<h4防范方式</h4<ul<li使用mysql\_real\_escape\_string(),或者addslashes()过滤数据</li<li手动检查每一数据是否为正确的数据类型</li<li使用
Easter79 Easter79
3年前
SQL注入基础 sql注入详细解释 小白学习笔记
sql注入作为安全攻防中最重要的一个部分,可以说是所有渗透测试注入中最为重要的一个注入,不管是预防还是测试,都需要扎实的基础才能明白sql注入。温馨提示:此文章仅限于学习记录与讨论,不得随意测试或者注入,互联网不是法外之地,任何除学习之外的事情与作者无关。sql注入顾名思义就是执行sql命令原理:执行的用户能使用sql注入绕过认证机制
Stella981 Stella981
3年前
PHP开发web应用安全总结
一、SQL注入攻击(SQLInjection)攻击者把SQL命令插入到Web表单的输入域或页面请求的字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。常见的SQL注入式攻击过程类如:1.某个Web应用有一个登录页面,这
Stella981 Stella981
3年前
Django框架
Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来。与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入的长度和格式等正不正确。如果用户输入的内容有错误就需要在页面上相应的位置显示显示对应的错误信息.。Djangoform组件
Stella981 Stella981
3年前
SQL注入基础 sql注入详细解释 小白学习笔记
sql注入作为安全攻防中最重要的一个部分,可以说是所有渗透测试注入中最为重要的一个注入,不管是预防还是测试,都需要扎实的基础才能明白sql注入。温馨提示:此文章仅限于学习记录与讨论,不得随意测试或者注入,互联网不是法外之地,任何除学习之外的事情与作者无关。sql注入顾名思义就是执行sql命令原理:执行的用户能使用sql注入绕过认证机制
Wesley13 Wesley13
3年前
mysql学习总结(三)
1.SQL注入     1)什么是sql注入:         例如:用户在网页进行登录操作时,输入数据库语句,导致网页的登录限制失效,不需要输入用户名和密码,用户可以输入语句就登录网页     2)出现sql注入的原因:        因为太相信用户的输入,导致我们在接收用户
欣喜若狂 欣喜若狂
2年前
XSS攻击问题皕杰报表解决方案
XSS表示CrossSiteScripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在XSS攻击中,通过插入恶意脚本,实现对用户游览器的控制。XSS攻击可以分成两种类型:1