JavaWeb

作者: 蜡笔没了小新_e8c0 | 来源:发表于2019-03-31 19:51 被阅读0次

1.什么是 XSS 攻击,如何避免?

XSS攻击,即跨站脚本攻击。 原理是攻击者往 web 页面里插入恶意的脚本代码(CSS代码、JavaScript代码等),当用户浏览该页面时,嵌入其中的脚本代码会被执行,从而达到恶意攻击用户的目的。如盗取用户cookie,破坏页面结构、重定向到其他网站等。
例如:
在一个表单输入框中输入了随机的字符串,然后将字符串在另一个地方当成value变量输出。
<span value="字符串信息"></span>
如果字符串信息为:

"/><script>alert(document.cookie)</script><!-

那么转换后的结果就是:

<span value=" "/><script>alert(document.cookie)</script><!- "></span>

这将直接泄露用户的cookie信息。

预防措施

  • 过滤特殊字符:许多语言都对HTML的过滤有方法提供:

PHPhtmlentities()或是htmlspecialchars()
Pythoncgi.escape()
ASPServer.HTMLEncode()
ASP.NETServer.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
Javaxssprotect (Open Source Library)
Node.js的node-validator。

  • 使用HTTP头指定类型
  • 浏览器可能自带XSS过滤器

2.什么是 CSRF 攻击,如何避免?

CSRF的全称是“跨站请求伪造”。CSRF原理是伪造用户的正常操作,例如,当用户登录一个安全网站A,在浏览器中会保存用户的cookie,此时,当用户再去访问一个非法网站B,非法网站中会存在对网站A的请求,由于浏览器中已经保存了用户的cookie,所以安全网站会认为此请求是合法的,从而进行一些操作,但该操作是由非法网站发起的,是一种伪造用户行为的过程。

防御策略:

  • 验证HTTP Referer字段:Referer记录了HTTP请求的来源地址,可以验证构造页面请求的URL。

缺点:Referer的值是由浏览器提供,不同浏览器的实现方式不同。同时,合法用户也可以在浏览器中设置拒绝提供Referer。

  • 在请求地址中添加token并验证
  • 在HTTP头中自定义属性并验证

3.如何避免 sql 注入?

  • 严格限制Web应用的数据库的操作权限,给此用户提供仅仅能够满足其工作的最低权限。
  • 检查输入的数据是否具有所期望的数据格式,严格限制变量的类型。
  • 对进入数据库的特殊字符进行转义处理,或编码转换。
  • 所有查询语句建议使用数据库提供的参数化查询接口。
  • 在应用发布之前建议使用专业的SQL注入检测工具进行检测,以及时修补被发现的SQL注入漏洞。
  • 避免网站打印出SQL错误信息。

相关文章

网友评论

      本文标题:JavaWeb

      本文链接:https://www.haomeiwen.com/subject/cygzvqtx.html