安全性战术包括抵抗攻击的战术、检测攻击的战术和从攻击从恢复的战术。
安全性是衡量系统在向合法用户提供服务的同时,阻止非授权使用的能力。试图突破安全防线的行为被称为攻击,它可以是未经授权试图访问数据或服务,或试图修改数据,也可能是试图使系统拒绝向合法用户提供服务。
抵抗攻击:
1.对用户进行身份验证,保证用户的合法身份,比如在设计系统时,我们通常会加入登录注册帐号的环节,这就是为了检测用户的身份。
2..对用户进行授权,限制用户的使用权限,这点我在使用虚拟机时感受较多,有好多命令行在执行不了时,需要在命令行最前面加一个sudo,赋予管理员权限便可执行
3.维护数据的机密性,对传输数据进行加密,这点我记忆最深的时在一个与同学合作的项目里,对数据库密码进行了加密,使用了md5算法进行了加密,多亏了那次机会,我才对加密算法有了更深的了解。
import java.math.BigInteger; import java.security.MessageDigest; public class MD5 { /** * 对字符串md5加密(小写字母+数字) * * @param str 传入要加密的字符串 * @return MD5加密后的字符串 */ public static String getMD5(String str) { try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes()); return new BigInteger(1, md.digest()).toString(16); } catch (Exception e) { e.printStackTrace(); return null; } } /** * 对字符串md5加密(大写字母+数字) * * @param str 传入要加密的字符串 * @return MD5加密后的字符串 */ public static String MD5(String s) { char hexDigits[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; try { byte[] btInput = s.getBytes(); MessageDigest mdInst = MessageDigest.getInstance("MD5"); mdInst.update(btInput); byte[] md = mdInst.digest(); int j = md.length; char str[] = new char[j * 2]; int k = 0; for (int i = 0; i < j; i++) { byte byte0 = md[i]; str[k++] = hexDigits[byte0 >>> 4 & 0xf]; str[k++] = hexDigits[byte0 & 0xf]; } return new String(str); } catch (Exception e) { e.printStackTrace(); return null; } } }
4.维护数据的完整性,对数据进行检验,输入数据无法在数据库中查询到时报错
5.防止暴露的信息,攻击者通常会利用暴露的某个弱点来攻击主机上的所有数据和 服务。设计师可以设计服务在主机上的分配,以使只能在每个主机上获得受限的 服务。
6.限制访问,比如防火墙,防火墙根据消息源或目的地端口来限制访问。来自未知源的消息可能 是某种形式的攻击。限制对已知源的访问并不总是可行的。例如,一个公共网站 上可能会有来自未知源的请求。这种情况中使用的一个配置就足所谓的解除管制 区(DMZ)。当必须对Internet服务而非专有网提供访问时使用DMZ。它位于 Internet和内部网前面的防火墙之间。DMZ包含预计会从任意源接收消息的设备, 这些信息源包括Web服务、e-mail和域名服务等。
检测攻击:
一般通过“入侵检测”系统进行过滤、比较通信模式与历史基线等方法
以下是查的资料
从攻击中恢复:
恢复:检查点/回滚:检查点就是使状态一致的同步点,它或者是定期进行,或者是对具体事件做出响应。当在两检查点之间发生故障时,则以这个一致状态的检查点(有快照)和之后发生的事务日志来恢复系统(数据库中常使用)。
识别攻击者:作为审计追踪,用于预防性或惩罚性目的。