[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [aspectj-users] Additional Information Passing
|
> there are no common criteria which parameters to exclude.
It sounds to me like case-by-case pointcuts:
----------
before() : execution(void X+.working(A, B, C)) {
log(thisJoinPoint, {parmSelector});
}
before() : call(void Y+.idling(B, C)) {
log(thisJoinPoint, {parmSelector});
}
...
----------
Depending on whether your types or names are stable and significant,
you can build {parmSelector} logic around those; otherwise, this
approach might be hard to maintain under refactoring.
If information of a given type is always security-sensitive, you
could tag those types:
declare parents : UserName implements ISecure;
Then exclude ISecure instances when logging, and perhaps flag any
field or call reference thereto:
declare error : (set(ISecure+ *) || get(ISecure+ *)) && within(IAspect+)
: "aspect writing or reading secure fields".
declare error : call(* ISecure+(..)) && within(IAspect+)
: "aspect calling secure methods".
Without common criteria, it's all encoding!
I suspect it would be useful in any case to document and
identify the security-sensitive parameters; perhaps
annotations would help.
Wes
> ------------Original Message------------
> From: Simon Heinzle <simon.heinzle@xxxxxxxxxx>
> To: aspectj-users@xxxxxxxxxxx
> Date: Wed, May-4-2005 4:50 AM
> Subject: Re: [aspectj-users] Additional Information Passing
>
> Mathew,
>
> there are no common criteria which parameters to exclude. For example
> parameters that should not be logged are username/password, account
> information, keys, ...
>
> Passing additional information would solve the problem by passing a
> exclusion bit mask: (bit i) == 1 --> do not trace parameter i, ...
>
> For example:
>
> ********************************************************************
>
> // pointcut, passing information via exclusionMask
> pointcut TracePC(int exclusionMask) :
> (execution (* *..SomeClass.someMethod(..)) && exclusionMask(5))
> (execution (* *..OtherClass.method(..)) && exclusionMask(0))
> || ...
>
> // corresponding advice
> before(int exclusionMask) : TracePC(exclusionMask) {
> // get this pointer
> Object calleeThis = thisJoinPoint.getThis();
>
> // get signature
> CodeSignature methodSignature =
> (CodeSignature) thisJoinPoint.getSignature();
> String methodName = methodSignature.getName();
>
> // get parameter names & parameters
> Object[] paramNames = methodSignature.getParameterNames();
> Object[] paramObjects = thisJoinPoint.getArgs();
> Object[][] methodParams = new Object[paramNames.length][2];
>
> // copy and mask out parameters
> for (int i=0; i<paramNames.length; i++) {
> methodParams[i][0] = paramNames[i];
> if ((excludeMask & 1) == 0) {
> methodParams[i][1] = paramObjects[i];
> }
> else {
> methodParams[i][1] = "* masked *";
> }
> excludeMask = excludeMask >> 1;
> }
>
> log.entering(calleeThis, methodName, methodParams);
> }
>
> ********************************************************************
>
> Regards,
> Simon
>
>
>
> Matthew Webster wrote:
> >
> >
> >
> > Simon,
> >
> > What are your criteria for excluding a piece of information from the
> trace?
> > How do you wish to exclude it (not trace the method at all or just
> the
> > object)? How does passing additional information (what do you have in
> mind)
> > help with this problem?
> >
> > Matthew Webster
> > AOSD Project
> > Java Technology Centre, MP146
> > IBM Hursley Park, Winchester, SO21 2JN, England
> > Telephone: +44 196 2816139 (external) 246139 (internal)
> > Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx
> > http://w3.hursley.ibm.com/~websterm/
> >
> > Simon Heinzle <simon.heinzle@xxxxxxxxxx>@eclipse.org on 03/05/2005
> 16:31:20
> >
> > Please respond to aspectj-users@xxxxxxxxxxx
> >
> > Sent by: aspectj-users-bounces@xxxxxxxxxxx
> >
> >
> > To: AspectJ <aspectj-users@xxxxxxxxxxx>
> > cc:
> > Subject: [aspectj-users] Additional Information Passing
> >
> >
> > Hi all,
> >
> > Is there really no way to pass additional information to a pointcut
> > other than Joinpoints, Parameter Arguments, ... ?
> >
> > We're currently working on a Logging-Aspect, but we must be able to
> mask
> > out security sensitive parameters. One pointcut + advice for each
> > "masking configuration" (Parameter 1 logged, Param 2 not, ..) is a
> > solution, but not a very readable and extensible one (and of course,
> 6
> > parameter-methods could possibly infer 64 such pointcuts).
> >
> > Any suggestions how to solve this problem?
> >
> > Regards,
> > Simon
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
> >
> >
> > _______________________________________________
> > aspectj-users mailing list
> > aspectj-users@xxxxxxxxxxx
> > https://dev.eclipse.org/mailman/listinfo/aspectj-users
>
>
> --
> AdNovum Informatik AG
> Simon Heinzle
> Praktikant
>
> Roentgenstrasse 22, CH-8005 Zuerich
> mailto:simon.heinzle@xxxxxxxxxx
> phone: +41 44 272 6111, fax: +41 44 272 6312
> http://www.adnovum.ch
>
> AdNovum Offices: Bern, Budapest, San Mateo, Zuerich (HQ)
> _______________________________________________
> aspectj-users mailing list
> aspectj-users@xxxxxxxxxxx
> https://dev.eclipse.org/mailman/listinfo/aspectj-users
>