api: avoid sending sensitive data in api response

- UI: use post when updating user
- S3: don't send s3 key in the response
- VPN: don't send preshared key in remoteaccessvpn api response
- Snapshot response should set zone id not volume's device id

Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
Rohit Yadav 2015-03-11 16:30:20 +05:30
parent 7d2ffe063d
commit 02cadc3fb3
4 changed files with 6 additions and 12 deletions

View File

@ -41,10 +41,6 @@ public class RemoteAccessVpnResponse extends BaseResponse implements ControlledE
@Param(description = "the range of ips to allocate to the clients") @Param(description = "the range of ips to allocate to the clients")
private String ipRange; private String ipRange;
@SerializedName("presharedkey")
@Param(description = "the ipsec preshared key")
private String presharedKey;
@SerializedName(ApiConstants.ACCOUNT) @SerializedName(ApiConstants.ACCOUNT)
@Param(description = "the account of the remote access vpn") @Param(description = "the account of the remote access vpn")
private String accountName; private String accountName;
@ -85,10 +81,6 @@ public class RemoteAccessVpnResponse extends BaseResponse implements ControlledE
this.ipRange = ipRange; this.ipRange = ipRange;
} }
public void setPresharedKey(String presharedKey) {
this.presharedKey = presharedKey;
}
@Override @Override
public void setAccountName(String accountName) { public void setAccountName(String accountName) {
this.accountName = accountName; this.accountName = accountName;

View File

@ -452,7 +452,7 @@ public class ApiResponseHelper implements ResponseGenerator {
snapshotResponse.setVolumeId(volume.getUuid()); snapshotResponse.setVolumeId(volume.getUuid());
snapshotResponse.setVolumeName(volume.getName()); snapshotResponse.setVolumeName(volume.getName());
snapshotResponse.setVolumeType(volume.getVolumeType().name()); snapshotResponse.setVolumeType(volume.getVolumeType().name());
DataCenter zone = ApiDBUtils.findZoneById(volume.getDeviceId()); DataCenter zone = ApiDBUtils.findZoneById(volume.getDataCenterId());
if (zone != null) { if (zone != null) {
snapshotResponse.setZoneId(zone.getUuid()); snapshotResponse.setZoneId(zone.getUuid());
} }
@ -1300,7 +1300,6 @@ public class ApiResponseHelper implements ResponseGenerator {
vpnResponse.setPublicIp(ip.getAddress().addr()); vpnResponse.setPublicIp(ip.getAddress().addr());
} }
vpnResponse.setIpRange(vpn.getIpRange()); vpnResponse.setIpRange(vpn.getIpRange());
vpnResponse.setPresharedKey(vpn.getIpsecPresharedKey());
populateOwner(vpnResponse, vpn); populateOwner(vpnResponse, vpn);
vpnResponse.setState(vpn.getState().toString()); vpnResponse.setState(vpn.getState().toString());
vpnResponse.setId(vpn.getUuid()); vpnResponse.setId(vpn.getUuid());

View File

@ -84,7 +84,8 @@ public class ImageStoreJoinDaoImpl extends GenericDaoBase<ImageStoreJoinVO, Long
if ( detailName != null && detailName.length() > 0 && !detailName.equals(ApiConstants.PASSWORD)) { if ( detailName != null && detailName.length() > 0 && !detailName.equals(ApiConstants.PASSWORD)) {
String detailValue = ids.getDetailValue(); String detailValue = ids.getDetailValue();
if (detailName.equals(ApiConstants.KEY) || detailName.equals(ApiConstants.S3_SECRET_KEY)) { if (detailName.equals(ApiConstants.KEY) || detailName.equals(ApiConstants.S3_SECRET_KEY)) {
detailValue = DBEncryptionUtil.decrypt(detailValue); // ALWAYS return an empty value for the S3 secret key since that key is managed by Amazon and not CloudStack
detailValue = "";
} }
ImageStoreDetailResponse osdResponse = new ImageStoreDetailResponse(detailName, detailValue); ImageStoreDetailResponse osdResponse = new ImageStoreDetailResponse(detailName, detailValue);
osResponse.addDetail(osdResponse); osResponse.addDetail(osdResponse);
@ -99,7 +100,8 @@ public class ImageStoreJoinDaoImpl extends GenericDaoBase<ImageStoreJoinVO, Long
if ( detailName != null && detailName.length() > 0 && !detailName.equals(ApiConstants.PASSWORD)) { if ( detailName != null && detailName.length() > 0 && !detailName.equals(ApiConstants.PASSWORD)) {
String detailValue = ids.getDetailValue(); String detailValue = ids.getDetailValue();
if (detailName.equals(ApiConstants.KEY) || detailName.equals(ApiConstants.S3_SECRET_KEY)) { if (detailName.equals(ApiConstants.KEY) || detailName.equals(ApiConstants.S3_SECRET_KEY)) {
detailValue = DBEncryptionUtil.decrypt(detailValue); // ALWAYS return an empty value for the S3 secret key since that key is managed by Amazon and not CloudStack
detailValue = "";
} }
ImageStoreDetailResponse osdResponse = new ImageStoreDetailResponse(detailName, detailValue); ImageStoreDetailResponse osdResponse = new ImageStoreDetailResponse(detailName, detailValue);
response.addDetail(osdResponse); response.addDetail(osdResponse);

View File

@ -37,6 +37,7 @@
id: cloudStack.context.users[0].userid, id: cloudStack.context.users[0].userid,
password: md5Hashed ? $.md5(args.data.password) : args.data.password password: md5Hashed ? $.md5(args.data.password) : args.data.password
}, },
type: 'POST',
dataType: 'json', dataType: 'json',
async: true, async: true,
success: function(data) { success: function(data) {