Java Web技术经验总结(十七)

好久不见

  1. 使用httpOnly标识避免XSS攻击,参见:说说HttpOnly Cookie的作用。解决XSS攻击,有两种解决方法:1)服务端对提交上来的留言内容做过滤,把恶意代码过滤掉;2)让恶意javascript代码读取不到我们种的cookie。httpOnly的角色是第二种。
  2. lombok使用,参考:Lombok:让Java代码更优雅
//下面是类级别注解
@NoArgsConstructor //相当于定义1个无参构造函数
@Data //相当于定义了类里所有属性的get set eqauls hashCode toString
@RequiredArgsConstructor //一般和@NonNull注解配合使用,表示定义1个包含类里所有声明@NonNull注解的构造函数
@Accessors(fluent = true) //表示实体类可以用fluent风格去调用,例如:new Result().success(true).data(123); 这句话里success函数data 函数都是声明注解以后自动生成的,并且都返回当前类自身。
@FieldDefaults(level = AccessLevel.PRIVATE) //所有属性默认访问级别都是private ,省的挨个属性去写了,如果有10个属性,9个都是private ,1个是public ,可以单独覆盖.如果单独那个是包级别访问权限的,可以通过加上@PackagePrivate注解去覆盖
@UtilityClass //声明这个注解,会自动为该类生成1个私有无参构造函数,构造函数内部会直接抛异常,表示这个类是1个工具类,无法实例化
@Log4j2 //声明log4j2注解,会自动为该类创建1个 log属性,避免手动创建,lombok还支持slf4j,log4j1.x commons log ,jdk原生的log,都会有相应的注解支持 .
  1. Java Web安全编码,参见:Web 安全问题总结
  • 安全参数:HttpOnly、Secure Cookie
  • 防止页面被嵌入iframe放到其他页面,在Header中添加如下代码
/*
    X-Frame-Options:
        DENY         prevent any site from framing the page.
        SAMEORIGIN   allows only sites from the same domain to frame the page.
    */
    response.setHeader("X-Frame-Options","SAMEORIGIN");
  • CSRF:跨站请求伪造,利用一次请求令牌,在服务端进行验证
  • 会话迷恋:在登录成功后一定要重新生成新的Session Id
  1. 使用awk调换文件中某两列的位置
awk -F ',' '{print $3"," $2"," $1}' source_file.txt > source_file_revert.txt
  1. 如何控制一个外部调用的运行时间,自己做超时重试?
  • 通过Future.get(delay, unit)方法;
  • 通过Guava-retrying组件,参见:guava-retrying
  • 分享一篇好文章:业务代码中的重试
  1. fastjson中提供了一个TypeReference类,用于处理反序列化时候的泛型定义。参考资料:TypeReference;例子代码见:TypeReferenceExample
    7.使用Java8的并行流,需要注意线程安全问题,参考:https://my.oschina.net/7001/blog/1475500

本号专注于后端技术、JVM问题排查和优化、Java面试题、个人成长和自我管理等主题,为读者提供一线开发者的工作和成长经验,期待你能在这里有所收获。


Java Web技术经验总结(十七)_第1张图片
javaadu

你可能感兴趣的:(Java Web技术经验总结(十七))