数据库的数据保护:数据的安全性和完整性

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44333359/article/details/89337405

一.数据的安全性:

保护数据库以防止不合法的使用所造成的数据泄露、更改、或破坏。
**

数据库的不安全因素:

**

  • 非授权用户对数据库的恶意存取和破坏。
  • 数据库中重要或敏感的数据被泄露。
  • 安全环境的脆弱性。

数据安全性控制:

  • 用户身份鉴别

    • 静态口令鉴别

    • 动态口令鉴别

    • 生物特征鉴别

    • 智能卡鉴别

  • 多层存取控制

    • 自主存取控制方法
      GRANT 授权
      REVOKE 收回权限
      数据库角色:权限的集合。

    • 强制存取控制方法
      规则
      (1)仅当主体的许可证级别大于或者等于课题的密级时,该主题才能读取相应的客体。
      (2)仅当主体的许可证级别小于或者等于课题的密级时,该主题才能写相应的客体。
      综上系统首先进行自助存取控制检查,对通过自助存取控制检查的允许存取的数据对象再由系统自动进行强制存取控制检查。只有通过强制存取控制检查的数据库对象方可存取。

  • 视图机制
    通过视图把要保密的数据对无权存取的用户隐藏起来,从而自动对数据提供一定程度的安全保护。

  • 审计
    审计功能是数据库管理达到C2以上安全级别必不可少的一项指标。把用户对数据库的所有操作自动记录下来放在审计日志中,审计员利用审计日志监控数据库中各种行动,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、事件和内容等。还可以通过对审计日志分析,对潜在的威胁提前采取措施加以防范。
    一般设置为可选特征,主要用于安全性要求较高的部门。
    分类:

  • 服务器事件

  • 系统权限

  • 语句事件

  • 模式对象事件
    功能:

  • 数据加密
    存储加密
    传输加密:1.链路加密2.端到端加密

  • 其他安全保护
    推理控制
    隐蔽信道
    数据隐私

二.数据完整性

数据的正确性和相容性。
正确性是符合现实世界的语义,反映当前实际状况。
相容性是数据库同一个对象在不同关系表中的数据是符合逻辑的。
数据完整性和安全性实时有联系而又不尽相同的,数据完整性是防止数据库中存在符合语义的数据,也就是防止数据库中存在不正确数据。数据的安全性是保护数据库防止恶意破坏和非法存取。
1.分类:
实体完整性约束(主码)
参照完整性约束(外码‘)
用户自定义完整性约束
2.数据库完整性的功能
提供定义完整性约束条件的机制(设置主码等)
提供完整性检查的方法
进行违约处理

展开阅读全文

操作 数据库 数据安全性

04-12

做的一个程序rn在bean里操作表 abc中的 数据rn可能会有很多人一起往表里添加修改删除rn这时,我感觉很有可能会几个人同时修改一条记录rn这样导致出现点什么错误rn所以,在操作数据库的方法上是不是要加同步或线程之类的来控制?rn怎么做才能做到安全性最高??rnrnrnrnbean内容如下rnrn// sql_data.javarnpackage my;rnrnimport java.sql.*;rnrnpublic class sql_data rn String sDBDriver = "sun.jdbc.odbc.JdbcOdbcDriver";rnrn String sConnStr = "jdbc:odbc:liuyanban";rnrn Connection conn = null;rnrn Statement stmt = null;rnrn ResultSet rs = null;rnrn public sql_data() rn try rn Class.forName(sDBDriver);rn catch (java.lang.ClassNotFoundException e) rn System.err.println("sql_data(): " + e.getMessage());rn rn rnrn public void executeInsert(String sql) rn try rn conn = DriverManager.getConnection(sConnStr);rn stmt = conn.createStatement();rn stmt.executeUpdate(sql);rn stmt.close();rn conn.close();rn catch (SQLException ex) rn System.err.println("sql_data.executeUpdate:" + ex.getMessage());rn rn rnrn public ResultSet executeQuery(String sql) rn try rn conn = DriverManager.getConnection(sConnStr);rn stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,rn ResultSet.CONCUR_READ_ONLY);rn rs = stmt.executeQuery(sql);rnrn catch (SQLException ex) rn System.err.println("sql_data.executeQuery:" + ex.getMessage());rn rn return rs;rn rnrn public void executeUpdate(String sql) rn try rn conn = DriverManager.getConnection(sConnStr);rn stmt = conn.createStatement();rn stmt.executeUpdate(sql);rn stmt.close();rn conn.close();rn catch (SQLException ex) rn System.err.println("aq.executeQuery: " + ex.getMessage());rn rn rnrn public void executeDelete(String sql) rn try rn conn = DriverManager.getConnection(sConnStr);rn stmt = conn.createStatement();rn stmt.executeUpdate(sql);rn stmt.close();rn conn.close();rn catch (SQLException ex) rn System.err.println("sql_data.executeDelete:" + ex.getMessage());rn rn rnrn public void closeStmt() rn try rn stmt.close();rn catch (SQLException e) rn e.printStackTrace();rn rn rnrn public void closeConn() rn try rn conn.close();rn catch (SQLException e) rn e.printStackTrace();rn rn rnrn 论坛

没有更多推荐了,返回首页