web网页应用常见安全攻击手段

一、攻击手段

主动攻击: 直接向应用服务器发起攻击,传入代码,比如OS注入、SQL注入。 被动攻击:诱导客户操作,向服务器发送植入非法代码的请求,比如CSRF、XSS。 主动与否的判断依据:攻击的直接发起者是普通用户还是攻击者。

JS注入 解决方法:HTML编码 如:<%=Html.Encode(feedback.Message)%> HTML5引入的新标签包括、、、

、等等,而这些标签又有一些有趣的属性,例如poster、autofocus、onerror、formaction、oninput,这些属性都可以用来执行javascript。这会导致XSS和CSRF跨域请求伪造。

1.SQL注入

非法修改SQL语句。

2.OS命令注入攻击

通过web应用调用操作系统命令,通过shell命令可以调用操作系统的其它程序,只要有能够调用shell函数的地方就有被攻击的风险。

3.HTTP首部注入

在响应首部加入换行符(HTTP换行符:%0D%0A),设置cookie信息,假冒用户。 (1)HTTP响应截断攻击:需要插入两个HTTP换行符,然后并排插入字符串发送,插入的字符串是伪造的响应主体(网页内容)。可以达到和跨站脚本攻击相同的效果。

4.邮件首部注入

向邮件首部To/Subject任意添加非法内容,可以对任意邮件发送广告邮件或者病毒邮件。

5.目录遍历攻击(directory traversal)

非法访问服务器其它文件路径,比如/etc/passed。

6.XSS(跨站脚本攻击,cross-site script)

(1)表单 在URL添加JavaScript代码,获取用户表单信息,并且提交到攻击者的服务器。 (2)cookie 保护cookie:httponly——服务端设置Set-Cookie: user=t=bfabf0b1c1133a822; path=/; HttpOnly (3)显示伪造的图片、文章 xss防范:

方法一:

阻止 JavaScript 注入攻击的一种简单方法是重新在视图中显示数据时,用 HTML 编码任何网站用户输入的数据 如:<%=Html.Encode(feedback.Message)%> 使用 HTML 编码一个字符串的含意是什么呢?使用 HTML 编码字符串时,危险字符如 < 和 > 被替换为 HTML 实体,如 < 和 >。所以,当使用 HTML 编码字符串 。浏览器在解析编码的字符串时不再执行 JavaScript 脚本。而是显示无害的页面。 方法二:

除了在视图中显示数据时使用 HTML 编码数据,还可以在将数据提交到数据库之前使用 HTML 编码数据。 StringEscapeUtils.escapeHtml(“前台提交的数据”);

通常,人们喜欢使用本教程中讨论的第一种方法,而不喜欢使用第二种方法。第二种方法的问题在于在数据库中最终会保留 HTML 编码的数据。换言之,数据库中的数据会包含奇怪的字符。这有什么坏处呢?如果需要用除网页以外的形式显示数据库数据,则将遇到问题。例如,不能轻易在 Windows Forms 应用程序中显示数据。

7.会话固定攻击(session fixation)

访问登录页面,利用服务器返回的URL诱导用户前去认证,再用用户的会话ID去登录网站。

8.CSRF(跨站点请求伪造,cross-site request forgeries)

利用已经认证的用户,向应用服务器发送请求,完成相应操作,比如发表言论,购买。 1、验证HTTP Referer字段

在HTTP头中有Referer字段,他记录该HTTP请求的来源地址,如果跳转的网站与来源地址相符,那就是合法的,如果不符则可能是csrf攻击,拒绝该请求 2、在请求地址中添加token并验证

这种的话在请求的时候加一个token,值可以是随机产生的一段数字, token是存入数据库之后,后台返给客户端的,如果客户端再次登录的时候, 后台发现token没有,或者通过查询数据库不正确,那么就拒绝该请求

如果想防止一个账号避免在不同的机器上登录,那么我们就可以通过token来判断, 如果a机器登录后,我们就将用户的token从数据库清除,从新生成, 那么另外一台b机器在执行操作的时候,token就失效了,只能重新登录,这样就可以防止两台机器登同一账号 3、在HTTP头中自定义属性并验证

如果说通过每次请求的时候都得加token那么各个接口都得加很麻烦, 那么我们通过http的请求头来设置token 例如: $.ajax({ url: ‘/v1/api’, dataType: ‘json’, data: param, type:‘post’, headers: {‘Accept’:‘application/json’,‘Authorization’:tokenValue} success:function(res){ console.log(res) } })

二、其它安全隐患

1.不能访问没有权限的文本内容,却能够访问图片资源 2.不恰当的错误信息抛出

  • 数据库管理系统抛出的错误
  • 后台应用抛出的程序错误
  • 前端校验错误信息提示

3.开放重定向 4.密码破解

  • 密码试错 穷举法 建立字典
  • 对加密的密码进行破解 密码加密:密码+salt –> md5(散列函数)–> 保存散列值 破解方法:
    • 穷举法、字典 调用相同散列函数处理候选密码得到散列值,与目标散列值比对。
    • 彩虹表 明文和散列值构成的数据库表。能够提高效率。类似字典攻击。
    • 拿到密钥
    • 利用加密算法的漏洞
  • 点击劫持(clickjacking) 又称界面伪装,诱导客户点击存在陷阱的按钮或者链接。在合法页面上设置透明的iframe页面。
  • DoS攻击(denial of service attack) 又称拒绝服务攻击。 集中发送合法请求,消耗服务器资源。 DDoS攻击(distributed denial of service attack):多台计算机发送的DoS攻击。一般利用已经中毒的计算机作为工具发送DoS。
  • 网站劫持  使用 https
  • 后门程序 分类: 开发阶段作为debug调用的后门程序 开发者为了自身利益植入的后门程序 攻击者设置的后门程序
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
个人中心
购物车
优惠劵
搜索