一、XSS攻击原理
Xss(cross-site scripting)攻击指的是攻击者往Web页面里插入恶意html标签或者javascript代码。
比如:
- 攻击者在论坛中放一个看似安全得链接,骗取用户点击后,窃取cookie中用户私密信息;
- 或者攻击者在论坛中加入一个恶意的表单,当用户提交表单得时候,却把信息传送到攻击者得服务器中,而不是用户原本以为得信任站点。
危害:
- 盗取用户信息,比如:机器登陆账号、用户网银账号、各类管理员账号。
- 控制企业数据,包括:读取、篡改、添加、删除企业敏感数据的能力。
- 盗窃企业重要的具有商业价值的资料。
- 非法转账。
- 强制发送电子文件。
- 控制受害者及其向其他网站发起攻击。
二、XSS攻击防范方法
首先代码里对用户输入的地方和变量都需要仔细检查长度和对“<>”、" "等字符做过滤,
其次任何内容械刀页面之前都必需加以encode,避免不小心把html、tag弄进来。这一个层面做好,至少可以堵住超过一半的Xss攻击。
首先,避免直接在cookie中泄露用户隐私,例如:email、密码等等。
其次,通过使cookie和系统ip绑定来降低cookie泄露的风险,这样攻击者得到的cookie没有实际价值,不可能拿来重放。尽量采用POST而非GET提交表单
三、XSS攻击和CSRF攻击(跨站请求伪造)区别
1.xss是获取信息,不需要提前知道用户其他用户页面的代码和数据包。CSRF是代替用户完成指定动作,需要知道其他用户页面的到吗和数据包。
2.要完成一次CSRF攻击,受害者必须依次完成两个步骤:
1)登录受信任网站A,并在本地生成cookie。
2)在不登出A的情况下,访问危险网站B。
四、CSRF攻击
原理:
CSRF,即跨站请求伪造,是一种常见的Web攻击。CSRF攻击过程的受害者用户网站A,输入个人信息,在本地保存服务器生成的cookie,然后在A网站点击由攻击者构建一条恶意网站链接跳转到B网站,然后B网站携带者的用户cookie信息去访问B网站。让A网站造成是用户自己访问的假象,从而进行一些列的操作,常见的就是转账。
危害:
通过基于受信任的输入form和对特定行为无需授权的已认证的用户来执行某些行为的web应用,已经通过呗保存在用户浏览器中的cookie进行认证的用户将在完全无知的情况下发送http请求那个信任他的站点,然而惊醒用户不愿做的行为。
防范:
1、验证码
应用程序和用户进行交互过程中,特别是账户交易这种核心步骤,强制用户输入验证码,才能完成最终请求,在通常情况下,验证码能够很好的遏制CSRF攻击。但增加验证码降低了用户的体验,网站不能给所有的操作都加上验证码。所以只能将验证码作为一种辅助手段,在关键业务点设置验证码。
2.Anti CSRF Token
目前比较完善的解决方案是加如Anti-CSRF-Token,即在发送请求时在HTTP请求中以参数的形式加入一个随机产生的token,并在服务器建立一个拦截器来验证这个token。服务器读取浏览器当前当前域cookie中这个值,会进行校验该请求当中的token和cookie当中的token值是否都存在且相等,才认为这是合法请求。
五、CSRF的防御
服务端的CSRF方式方法很多杨,但是思想都是一致的,就是在客户端页面增加伪随机数。
通过验证码的方法
SQL注入攻击
原理:
SQL注入(SQL Injection),应用程序在向后台数据传递SQL(Structured Query Language,结构化语言)时,攻击者将SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
危害:
得到管理员的权限。
防范:
1、增加黑名单或白名单验证
白名单验证一般指:检查用户输入是否时符合预期的长度、类型、数值范围或者其他格式标准。黑名单验证是指、若在用户输入中,包含明显的恶意内容则拒绝该条用户的请求。在使用白名单验证时,一般会配合黑名单验证。
2、安全检测
在项目完成的时候,始终坚持安全检测。
3、防止系统铭感信息泄露
对数据表的访问权限进行严格控制,尽量限制用户不必要的访问权限。
六、总结
1、sql注入原理
就是通过把SQL命令插入Web表单递交或输入域名页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
2、sql注入防范
1.永远不要新人用户的输入,要对用户的输入进行校验,可以通过正则表达式、或者限制长度,对单引号和双引号进行转换等。
2.永远不要使用动态拼装SQL,可以使用参数化的SQL或者直接使用存储过程进行数据查询获取。
3、永远不要使用管理员权限的数据库链接,为每个应用使用单独的权限有限的数据库连接,
4、不要把机信息明文存放,请加密或者hash掉密码和敏感的信息。
3、XSS
Xss攻击指的是攻击者往Web页面里插入恶意的html标签或者javascript代码。
xss防范:
1、首先代码里对用户输入的地方和变量都需要仔细检查长度和对”<”,”>”,”;”,”’”等字符做过滤;
2、其次任何内容写到页面之前都必须加以encode,避免不小心把html tag 弄出来。这一个层面做好,至少可以堵住超过一半的XSS 攻击。
3、首先,避免直接在cookie 中泄露用户隐私,例如email、密码等等。
4、其次,通过使cookie 和系统ip 绑定来降低cookie 泄露后的危险。这样攻击者得到的cookie 没有实际价值,不可能拿来重放。
尽量采用POST 而非GET 提交表单
4、CSRF
CSRF(Cross Site Request
Forgery),即跨站请求伪造,是一种常见的Web攻击。CSRF攻击过程的受害者用户登录网站A,输入个人信息,在本地保存服务器生成的cookie。然后在A网站点击由攻击者构建一条恶意链接跳转到B网站,然后B网站携带着的用户cookie信息去访问B网站。
5、CSRF的防御
服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。
通过验证码的方法