当前位置: 首页 > news >正文

开发过程中需要注意的安全问题

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

开发过程中常见的安全问题

必要系统参数需要加密

java 开发,一般都使用spring,比如jdbc等系统参数参数我们通常会抽出一个jdbc.properites,大部分情况 jdbc.properties 中的数据都是明文展示的。这样假如我们的服务器被攻破那么数据库相关数据也基本可被攻击者完全查看到。

解决方法

  1. jdbc.properties中的必要数据做加密,不要在jdbc.properties显示重要的明文信息。
  2. spring.xml 中需要引入jdbc.properties 并对相关信息进行解密。这样就无法通过<context:property-placeholder location="classpath*:conf/*.properties" ignore-unresolvable="true"/>通过这种方式来引入相关配置文件。而需要通过配置bean,并在bean对相关数据进行解密。
spring.xml
<bean class="com.adups.dbencrypt.EncryptPropertyPlaceholderConfigure" p:locations="classpath*:conf/*.properties" p:ignoreUnresolvablePlaceholders="true">
</bean>
EncryptPropertyPlaceholderConfigure.java
public class EncryptPropertyPlaceholderConfigure extends PropertyPlaceholderConfigurer {
    private String[] encryptPropNames = {"jdbc_url", "jdbc_username","jdbc_password"};
    protected void processProperties(ConfigurableListableBeanFactory beanFactoryToProcess, Properties props)
            throws BeansException {
        try {
            for (String prop : encryptPropNames) {
                String url = props.getProperty(prop);
                if (url != null) {
                    props.setProperty(prop, DbEncryptUtils.getDecryptString(url));
                }
            }
            super.processProperties(beanFactoryToProcess, props);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

文件上传限制

文件上传必须对文件格式做限制,防止用户上传脚本木马。针对文件上传后展示最好使用nginx,针对tomcat不能让用户上传jsp文件。假如用户上传jsp文件,并调取上传的这个jsp,如果这个jsp经过tomcat解析,那么用户就可以通过上传jsp脚本木马获取到部署代码,并获得服务器。

java 执行shell 需要对特殊字符做过滤

如果在java 程序中需要调取liunx shell 命令,那么在执行命令之前对用户传入的参数中的特殊字符(" ' | )等做限制和替换。

XSS漏洞

java web 一般使用 filter (XSSRequestWrapper)对请求参数进行参数格式化,过滤可能存在xss漏洞的参数。但是这个方法对 form 表单类型为multipart/form-data是没有效果的。所以针对form为multipart/form-data时,需要单独进行XSS处理。

获取IP

我们从网上找java获取ip的代码,会发现很多代码都是从 request 的头中解析ip。但是这种方式很不安全,用户可以手动设置这些值导致ip获取不准确。
使用request.getRemoteAddr();获取实际IP。

服务器权限

针对一个服务器可能需要部署很多应用比如tomcat mysql nginx 等。针对不同的应用我们最好配置不同的用户,并严重控制每种用户的权限。

转载于:https://my.oschina.net/shichangcheng/blog/1545919

相关文章:

  • js控制点击让div滚动,显示一个,隐藏一个
  • 为什么企业迁移到云?81%的企业只是害怕“错过”
  • 6个月融资超50亿元,云计算创业团队正做得风生水起?
  • 「win」玩转快捷键热词速写
  • 别只盯着SD-WAN了,关注一下IPv6吧
  • Azure PowerShell (2) 修改Azure订阅名称
  • 为什么说中头彩了?这个行业居然也要上云?
  • 工程添加EF框架的方法
  • 逻辑运算的优先级
  • 【机器学习实战】第6章 支持向量机(Support Vector Machine / SVM)
  • 无线网络覆盖的两种方式:天馈式与吸顶式
  • 自定义控件的最基本了解和应用
  • 主从复制原理以及实践
  • 网站301跳转到新域名
  • 词向量模型
  • 【译】JS基础算法脚本:字符串结尾
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • CSS3 变换
  • react-core-image-upload 一款轻量级图片上传裁剪插件
  • Spring核心 Bean的高级装配
  • SQL 难点解决:记录的引用
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 警报:线上事故之CountDownLatch的威力
  • 跨域
  • 那些年我们用过的显示性能指标
  • 前端工程化(Gulp、Webpack)-webpack
  • 06-01 点餐小程序前台界面搭建
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • #、%和$符号在OGNL表达式中经常出现
  • (0)Nginx 功能特性
  • (C语言)逆序输出字符串
  • (js)循环条件满足时终止循环
  • (JS基础)String 类型
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (六)激光线扫描-三维重建
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (全注解开发)学习Spring-MVC的第三天
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十八)SpringBoot之发送QQ邮件
  • (五)网络优化与超参数选择--九五小庞
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • **CI中自动类加载的用法总结
  • *Django中的Ajax 纯js的书写样式1
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .net 怎么循环得到数组里的值_关于js数组
  • @Autowired注解的实现原理
  • @ConditionalOnProperty注解使用说明
  • [ vulhub漏洞复现篇 ] GhostScript 沙箱绕过(任意命令执行)漏洞CVE-2019-6116
  • [1159]adb判断手机屏幕状态并点亮屏幕