1.常见网络攻击

1.SQL注入 2.CSRF攻击 3.XSS攻击 4.Dos攻击

1.SQL注入

SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,  
攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句, 
在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询, 
从而进一步得到相应的数据信息   

场景:

比如:服务器中有条查询语句为:select * from user where username=?;  
攻击者可以填入  1 or 1=1   
这样整条查询语句为:select * from user where username=1 or 1=1; 
本来程序的愿意是根据用户名查询指定用户,但是现在能够查询出所有用户  

解决办法:

1.可以使用PreparedStatement类
    预编译语句集,它内置了处理SQL注入的能力,只要使用它的setString方法传值即可:

    String sql= "select* from users where username=?andpassword=?;
    PreparedStatement preState= conn.prepareStatement(sql);
    preState.setString(1, userName);
    preState.setString(2, password);
    ResultSet rs= preState.executeQuery();

2.CSRF攻击

解决办法:

  • 1.如果是post请求可以添加隐藏域,这种适用于后端渲染页面

  • 2.可以使用自定义请求头保存登录token,用户登录成功后在服务端验证token的有效性

    3.XSS攻击

    XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标 用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了。

    通俗的说:就是利用非法注入src、script、img 等恶意代码执行

    例子:留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时, 那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的 HTML与Js解析执行,于是触发了XSS攻击

防御方法:

  • HttpOnly防止劫取Cookie

  • 输入检查

  • 输出检查

  • 不要使用 Eval来解析并运行不确定的数据或代码,对于 JSON解析请使用 JSON.parse() 方法

4.DOS 攻击 和 DDOS

Last updated