简单记录web安全

简单记录web安全

上个月大概一个月做了给简单得web安全,比较局限,因为大部分是行内项目,不是互联网的项目

用户名密码自动填充autocomplete

取消自动填充,登录页输入框加属性autocomplete =false

用户名密码暴力破解

限制用户名的密码的错误次数,超过三次输入错误,锁定用户。

验证码(图形/短信)暴力攻击

限制用户每分钟验证码请求次数

header特殊字符

比如header中换行符,request.getHeader。

csrf(跨站点请求伪造)

表单token防重复提交(一次提交失效)

refer(token校验)和host

host只允许已经允许得host进入本系统访问,浮动ip配置多个。
注意(已被坑),比如你的请求是http://127.0.0.1但是修改http的host为www.baidu.com,后台获取得request得getrequestUrl得值,www.baidu.com/test/

refer就是此页面得来源,比如A-》B,B请求得refer就是A,正常限制本系统内跳转,校验refer同源,可能会有一些浮动ip,或者移动端和pc端交互或者iam的,可以单独设置配置已认证资源放过请求.

安全头

Strict-Transport-Security
Content-Security-Policy
X-Content-Type-Options:nosniff (script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应)
X-Frame-Options:阻止点击挟持攻击:SAMEORIGIN(同源才加载),DENY依赖
X-XSS-Protection:1; mode=block

IE的行为受X-Content-Type-Options的影响,如果Web应用没有返回Content-Type,
那么IE9、IE11将拒绝加载相关资源。如果服务器发送响应头 “X-Content-Type-Options: nosniff”,则 script 和 styleSheet 元素会拒绝包含错误的 MIME 类型的响应。
这是一种安全功能,有助于防止基于 MIME 类型混淆的攻击。
"application/ecmascript"
"application/javascript"
"application/x-javascript"
"text/ecmascript"
"text/javascript"
"text/jscript"
"text/x-javascript"
"text/vbs"
"text/vbscript"

xss(跨站脚本js,css,shell,vb等)

输入可以显示在页面上对本来得html造型影响的一种攻击方式。

可以以来js脚本,比如alert等,也可以依赖css比如修改样式等

  1. 反射型,直接在html中输入可执行脚本,比如input输入半个引号,即可完成vakue=“”,然后绑定js事件,alert等
  2. 存储型,从数据库中获取得数据(可执行js等)在html数据展示是,返回到html执行或者篡改html,
  3. dom型

解决方案:
1.前端输入校验,比如禁止单引号双引号,可执行js或者css,style等
2.用户输入信息过滤:(存储型)query参数(get方法)/post的请求体参数:
可以使用filter对参数进行过滤,对入库和出库数据进行过滤,用正在表达式匹配掉,并replace掉非法字符,正则可以写成properties配置文件,方便读取和增加
比如:ript>可以绕过一次匹配,),onclick,onmouseover,on开头的所有js事件,window.location,alert,express,eval,frame=,window.onload ,等等,不可能完全防住,因为有n中攻击方式

状态码泄露

比如403,泄露有资源但是没有访问权限
转状态码 500-》200,host、referer不通过给404状态码,
定义错误页面404或者error.html等,不能泄露状态码

clickJacking(点击劫持)

比如在html页面上增加隐藏得frame,或者按钮同一个位置,加隐藏得按钮,发送请求到其他得地址。

method类型白名单

只允许get和post请求,禁止options探测,options探测会泄露信息

sql注入(盲注)

恶意sql在数据进行增删改查到拼接到sql时,执行恶意代码;
可以用xss过滤得时候,过滤sql特殊字符,比如删表的,select的等sql关键字进行过滤。
比如,‘and ’1‘=’1‘(很经典,select * from user where name = ‘user1’ and ‘1’=‘2’;恒成立,可以绕过密码等),增加order by 11等

session会话未更新

登陆前和登陆后session做一个失效,然后new一个新的。

cookie

设置httponly(禁止js获取cookie敏感信息)和secure安全

上传攻击

限制上传得(真实)后缀(有的字符会使后缀失效),必要可以做内容检测,当可指定文件上传到服务器后执行文件中代码。

url中特殊字符

http://www.baidu.com/sss/ddd;ddddd=ffff? 分号会引起url截断,不是url内合法字符

参数污染

比如/test/nnn?name=aaa&name=bbb&name=ccc可能引起数据错了

参数移除

比如id是int类型,给字符串,如果没有校验直接int parseInt就会程序错误
或者length 超长等。

解决方法:
规范校验
边界检查(范围限制,长度限制)
类型检查等

唯一性登陆,单客服端登陆(一个ip只能一个用户同使登陆)

版本(服务器)泄露 jquery等引用得js,http会泄露版本信息,部分jquery版本有安全问题。 异常后泄露得nginx版本信息, 以及http头得server信息等

ip,邮箱等泄露

第一次写,有问题欢迎指出,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值