- 访问控制:Android Provider
每个访问数据库的查询都必须遵守策略(不允许用户在没有取得相应权限的情况下获取或修改数据库中的记录),这可以通过把当前获得授权的用户名包括在查询语句内来实现
getContentResolver().insert(Uri.parse("content://sms"),values);
上面代码时将发送的短信插入数据库,Android5.0已经不允许进行该操作(还是可以获取短信列表的)
- Android Bad Practices: Missing Broadcaster Permission缺少广播者权限
防止应用内部的广播不能轻易的发送到外部应用中,或者应用内部不轻易的接收外部广播,加上安全权限访问还是有必要的
第一步:自己定义权限,并且使用自定义权限
<uses-permission android:name="com.internettaxtxl.permissions.MY_BROADCAST" />
<permission
android:name="com.internettaxtxl.permissions.MY_BROADCAST"
android:protectionLevel="signature" >
</permission>
第二步:定义注册广播
private static final String BROADCAST_PERMISSION_DISC = "com.cn.customview.permissions.MY_BROADCAST";
registerReceiver(sendMessage, new IntentFilter(SENT_SMS_ACTION),BROADCAST_PERMISSION_DISC,null);
private BroadcastReceiver sendMessage = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//判断短信是否发送成功
switch (getResultCode()) {
case Activity.RESULT_OK:
Toast.makeText(context, "短信发送成功", Toast.LENGTH_SHORT).show();
break;
default:
Toast.makeText(DuanXin.this, "短信发送失败", Toast.LENGTH_LONG).show();
break;
}
}
};
第三步: 发送广播
Intent intent = new Intent();
intent.setAction(BROADCAST_ACTION_DISC);
sendBroadcast(intent,BROADCAST_PERMISSION_DISC); //发送广播
注意:
registerReceiver(receiveBroadCast, filter,BROADCAST_PERMISSION_DISC,null);
如果改为registerReceiver(receiveBroadCast, filter);
照样能够收到第三步发送的消息,因为我们在xml里面已经申请了BROADCAST_PERMISSION_DISC权限,所以sendBroadcast(intent,BROADCAST_PERMISSION_DISC);发送广播我们依然能收到。
sendBroadcast(intent,BROADCAST_PERMISSION_DISC); 改为sendBroadcast(intent);也同样能收到这个消息。
因为第一个的意思是收到这个消息的广播监听器必须有BROADCAST_PERMISSION_DISC权限,如果第二个参数去掉,则说明广播监听器不需要任何权限就能收到这个消息。
- Cross-Site Scripting (XSS)
http://www.cnblogs.com/loveis715/archive/2012/07/13/2506846.html