You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Jose Luis Martinez Avial <jl...@pb-santander.com> on 2010/10/22 01:36:32 UTC
RequestHeaderAware in Struts 2?
Hello,
I'm working on an application that for security reasons needs to
access to the request headers from an action. I know I can access to the
request, but I'm also aware that that is not recomended. Is there a
RequestHeaderAware or something like that, that fits that the same
behaviour as ParameterAware, but with reference to the request headers?
Thanks
JL
Internet communications are not secure and therefore Banco
Santander International does not accept legal responsibility for
the contents of this message. Any views or opinions presented are
solely those of the author and do not necessarily represent those
of Banco Santander International unless otherwise specifically
stated.
Las comunicaciones via Internet no son seguras y por lo tanto
Banco Santander International no asume responsabilidad legal ni
de ningun otro tipo por el contenido de este mensaje. Cualquier
opinion transmitida pertenece unicamente al autor y no
necesariamente representa la opinion del Banco Santander
International a no ser que este expresamente detallado.
Re: RequestHeaderAware in Struts 2?
Posted by Dave Newton <da...@gmail.com>.
Like I said--in my mind it depends on how much of your application
requires this logic. If it covers a lot of the app, I think an
interceptor makes sense. If it's only tiny little bits, I'd inject a
utility class and call it directly.
Dave
On Wed, Oct 27, 2010 at 6:22 AM, Jose Luis Martinez Avial
<jl...@pb-santander.com> wrote:
> Gello Dave,
> There is nothing wrong with the ideas you gave me. I particulary like Li's idea. What I'm saying is that to get the IP address is a different story, since there maybe some logic involved that depends on the context. I'm thinking which is the most orthodox and clean way to do it. and if a RemoteAddressInterceptor would make sense. For example, while I think a RequestHeaderIntereceptor could (and I think it should) be added to the Struts2 stack, I'm not so sure about a RemoteAddressIntecerptor, that's why I ask for any ideas about the best way to implement it.
>
> Jose
>
> -----Original Message-----
> From: Dave Newton [mailto:davelnewton@gmail.com]
> Sent: Wednesday, October 27, 2010 3:39 AM
> To: Struts Users Mailing List
> Subject: Re: RequestHeaderAware in Struts 2?
>
> What's wrong with the ideas you've been given? Ying's is exactly what you asked for, Chris's might be more suitable if you want to set one or two action properties based on one or two header values.
>
> Another thing to consider is how the values will actually be used: the application-specific "context" of the header values. What expresses your intent most clearly? An action that implements "RequestHeaderAware", or an action that is "RemoteIPAddrAware" (or whatever)?
>
> Dave
>
> On Tuesday, October 26, 2010, Jose Luis Martinez Avial <jl...@pb-santander.com> wrote:
>> Well, that's an option. Another thing I would need to get is the Remote Address. That can be complicated, since sometimes -specially when you are behind a proxy, or something like that- the IP address you get is not correct. In those cases with a proxy usually the IP is in a header in the request(For example, if you are using Apache, you will get a "x-forwarded-for" header in the request). I was thinking about doing an interceptor that can be setup to look for that header(Or one similar, that can be setup in the struts xml) and if it's not present, set the IP into the action. What do you think?
>>
>> Jose
>>
>> -----Original Message-----
>> From: Li Ying [mailto:liying.cn.2010@gmail.com]
>> Sent: Tuesday, October 26, 2010 3:32 AM
>> To: Struts Users Mailing List
>> Subject: Re: RequestHeaderAware in Struts 2?
>>
>> What Chris has said is right.
>>
>> But what Jose Luis asked for is a inject mechanism likes ParameterAware which takes all the request params through one Map, but not through several property.
>>
>> So I think the simpler (also more Quick And Dirty) way is:
>>
>> (1)Create a interface, likes:
>> public interface HeaderAware {
>> /**
>> * Sets the map of request headers in the implementing class.
>> *
>> * @param headers
>> * a Map of headers (name/value Strings).
>> */
>> public void setHeaders(final Map<String, String[]> headers); }
>>
>> (2)implement this interface in your action class (or the common super
>> class of all of your actions)
>>
>> (3)create a interceptor, which inject the headers map to your action class likes what ServletConfigInterceptor is doing, the code will likes:
>>
>> public class RequestHeaderInterceptor extends AbstractInterceptor {
>> @Override
>> public String intercept(final ActionInvocation invocation)
>> throws Exception {
>> final Object action = invocation.getAction();
>>
>> if (action instanceof HeaderAware) {
>> Map<String, String[]> requestHeaders =
>>
>> this.getRequestHeaders(ServletActionContext.getRequest());
>> ((HeaderAware)
>> action).setHeaders(requestHeaders);
>> }
>>
>> return invocation.invoke();
>> }
>>
>> private Map<String, String[]> getRequestHeaders(
>> final HttpServletRequest request) {
>> Map<String, String[]> headers = new HashMap<String,
>> String[]>();
>>
>> // TODO: retrieve all the request headers by
>> // HttpServletRequest.getHeaderNames(),
>> HttpServletRequest.getHeaders()
>> // and put them into Map
>>
>> return headers;
>> }
>> }
>>
>> (4)add RequestHeaderInterceptor into your interceptor-stack
>>
>>
>>
>> 2010/10/26 Chris Pratt <th...@gmail.com>:
>>> As far as I'm aware, there's not. But it wouldn't be hard to write one.
>>> You could use the ParameterInterceptor as a pattern, but have it take
>>> it's data from the headers rather than the parameters and you'd be
>>> done in 1/2 hr. You could get fancier, to make sure Parameters and
>>> Headers with the same name don't clash, and use an Annotation to
>>> identify which headers to inject into which methods, but that would definitely take more than 1/2 hr.
>>> =8^)
>>> (*Chris*)
>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
> Internet communications are not secure and therefore Banco
> Santander International does not accept legal responsibility for
> the contents of this message. Any views or opinions presented
> are
> solely those of the author and do not necessarily represent those
> of Banco Santander International unless otherwise specifically
> stated.
>
> Las comunicaciones via Internet no son seguras y por lo tanto
> Banco Santander International no asume responsabilidad legal
> ni
> de ningun otro tipo por el contenido de este mensaje. Cualquier
> opinion transmitida pertenece unicamente al autor y no
> necesariamente representa la opinion del Banco Santander
> International a no ser que este expresamente detallado.
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: RequestHeaderAware in Struts 2?
Posted by Jose Luis Martinez Avial <jl...@pb-santander.com>.
Gello Dave,
There is nothing wrong with the ideas you gave me. I particulary like Li's idea. What I'm saying is that to get the IP address is a different story, since there maybe some logic involved that depends on the context. I'm thinking which is the most orthodox and clean way to do it. and if a RemoteAddressInterceptor would make sense. For example, while I think a RequestHeaderIntereceptor could (and I think it should) be added to the Struts2 stack, I'm not so sure about a RemoteAddressIntecerptor, that's why I ask for any ideas about the best way to implement it.
Jose
-----Original Message-----
From: Dave Newton [mailto:davelnewton@gmail.com]
Sent: Wednesday, October 27, 2010 3:39 AM
To: Struts Users Mailing List
Subject: Re: RequestHeaderAware in Struts 2?
What's wrong with the ideas you've been given? Ying's is exactly what you asked for, Chris's might be more suitable if you want to set one or two action properties based on one or two header values.
Another thing to consider is how the values will actually be used: the application-specific "context" of the header values. What expresses your intent most clearly? An action that implements "RequestHeaderAware", or an action that is "RemoteIPAddrAware" (or whatever)?
Dave
On Tuesday, October 26, 2010, Jose Luis Martinez Avial <jl...@pb-santander.com> wrote:
> Well, that's an option. Another thing I would need to get is the Remote Address. That can be complicated, since sometimes -specially when you are behind a proxy, or something like that- the IP address you get is not correct. In those cases with a proxy usually the IP is in a header in the request(For example, if you are using Apache, you will get a "x-forwarded-for" header in the request). I was thinking about doing an interceptor that can be setup to look for that header(Or one similar, that can be setup in the struts xml) and if it's not present, set the IP into the action. What do you think?
>
> Jose
>
> -----Original Message-----
> From: Li Ying [mailto:liying.cn.2010@gmail.com]
> Sent: Tuesday, October 26, 2010 3:32 AM
> To: Struts Users Mailing List
> Subject: Re: RequestHeaderAware in Struts 2?
>
> What Chris has said is right.
>
> But what Jose Luis asked for is a inject mechanism likes ParameterAware which takes all the request params through one Map, but not through several property.
>
> So I think the simpler (also more Quick And Dirty) way is:
>
> (1)Create a interface, likes:
> public interface HeaderAware {
> /**
> * Sets the map of request headers in the implementing class.
> *
> * @param headers
> * a Map of headers (name/value Strings).
> */
> public void setHeaders(final Map<String, String[]> headers); }
>
> (2)implement this interface in your action class (or the common super
> class of all of your actions)
>
> (3)create a interceptor, which inject the headers map to your action class likes what ServletConfigInterceptor is doing, the code will likes:
>
> public class RequestHeaderInterceptor extends AbstractInterceptor {
> @Override
> public String intercept(final ActionInvocation invocation)
> throws Exception {
> final Object action = invocation.getAction();
>
> if (action instanceof HeaderAware) {
> Map<String, String[]> requestHeaders =
>
> this.getRequestHeaders(ServletActionContext.getRequest());
> ((HeaderAware)
> action).setHeaders(requestHeaders);
> }
>
> return invocation.invoke();
> }
>
> private Map<String, String[]> getRequestHeaders(
> final HttpServletRequest request) {
> Map<String, String[]> headers = new HashMap<String,
> String[]>();
>
> // TODO: retrieve all the request headers by
> // HttpServletRequest.getHeaderNames(),
> HttpServletRequest.getHeaders()
> // and put them into Map
>
> return headers;
> }
> }
>
> (4)add RequestHeaderInterceptor into your interceptor-stack
>
>
>
> 2010/10/26 Chris Pratt <th...@gmail.com>:
>> As far as I'm aware, there's not. But it wouldn't be hard to write one.
>> You could use the ParameterInterceptor as a pattern, but have it take
>> it's data from the headers rather than the parameters and you'd be
>> done in 1/2 hr. You could get fancier, to make sure Parameters and
>> Headers with the same name don't clash, and use an Annotation to
>> identify which headers to inject into which methods, but that would definitely take more than 1/2 hr.
>> =8^)
>> (*Chris*)
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Internet communications are not secure and therefore Banco
Santander International does not accept legal responsibility for
the contents of this message. Any views or opinions presented
are
solely those of the author and do not necessarily represent those
of Banco Santander International unless otherwise specifically
stated.
Las comunicaciones via Internet no son seguras y por lo tanto
Banco Santander International no asume responsabilidad legal
ni
de ningun otro tipo por el contenido de este mensaje. Cualquier
opinion transmitida pertenece unicamente al autor y no
necesariamente representa la opinion del Banco Santander
International a no ser que este expresamente detallado.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: RequestHeaderAware in Struts 2?
Posted by Dave Newton <da...@gmail.com>.
What's wrong with the ideas you've been given? Ying's is exactly what
you asked for, Chris's might be more suitable if you want to set one
or two action properties based on one or two header values.
Another thing to consider is how the values will actually be used: the
application-specific "context" of the header values. What expresses
your intent most clearly? An action that implements
"RequestHeaderAware", or an action that is "RemoteIPAddrAware" (or
whatever)?
Dave
On Tuesday, October 26, 2010, Jose Luis Martinez Avial
<jl...@pb-santander.com> wrote:
> Well, that's an option. Another thing I would need to get is the Remote Address. That can be complicated, since sometimes -specially when you are behind a proxy, or something like that- the IP address you get is not correct. In those cases with a proxy usually the IP is in a header in the request(For example, if you are using Apache, you will get a "x-forwarded-for" header in the request). I was thinking about doing an interceptor that can be setup to look for that header(Or one similar, that can be setup in the struts xml) and if it's not present, set the IP into the action. What do you think?
>
> Jose
>
> -----Original Message-----
> From: Li Ying [mailto:liying.cn.2010@gmail.com]
> Sent: Tuesday, October 26, 2010 3:32 AM
> To: Struts Users Mailing List
> Subject: Re: RequestHeaderAware in Struts 2?
>
> What Chris has said is right.
>
> But what Jose Luis asked for is a inject mechanism likes ParameterAware which takes all the request params through one Map, but not through several property.
>
> So I think the simpler (also more Quick And Dirty) way is:
>
> (1)Create a interface, likes:
> public interface HeaderAware {
> /**
> * Sets the map of request headers in the implementing class.
> *
> * @param headers
> * a Map of headers (name/value Strings).
> */
> public void setHeaders(final Map<String, String[]> headers); }
>
> (2)implement this interface in your action class (or the common super class of all of your actions)
>
> (3)create a interceptor, which inject the headers map to your action class likes what ServletConfigInterceptor is doing, the code will likes:
>
> public class RequestHeaderInterceptor extends AbstractInterceptor {
> @Override
> public String intercept(final ActionInvocation invocation) throws Exception {
> final Object action = invocation.getAction();
>
> if (action instanceof HeaderAware) {
> Map<String, String[]> requestHeaders =
> this.getRequestHeaders(ServletActionContext.getRequest());
> ((HeaderAware) action).setHeaders(requestHeaders);
> }
>
> return invocation.invoke();
> }
>
> private Map<String, String[]> getRequestHeaders(
> final HttpServletRequest request) {
> Map<String, String[]> headers = new HashMap<String, String[]>();
>
> // TODO: retrieve all the request headers by
> // HttpServletRequest.getHeaderNames(), HttpServletRequest.getHeaders()
> // and put them into Map
>
> return headers;
> }
> }
>
> (4)add RequestHeaderInterceptor into your interceptor-stack
>
>
>
> 2010/10/26 Chris Pratt <th...@gmail.com>:
>> As far as I'm aware, there's not. But it wouldn't be hard to write one.
>> You could use the ParameterInterceptor as a pattern, but have it take
>> it's data from the headers rather than the parameters and you'd be
>> done in 1/2 hr. You could get fancier, to make sure Parameters and
>> Headers with the same name don't clash, and use an Annotation to
>> identify which headers to inject into which methods, but that would definitely take more than 1/2 hr.
>> =8^)
>> (*Chris*)
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: RequestHeaderAware in Struts 2?
Posted by Dave Newton <da...@gmail.com>.
Setting the value into the action is both cleaner, and more
expressive, and unless you inject a utility class instance, easier to
test.
On Wednesday, October 27, 2010, Li Ying <li...@gmail.com> wrote:
> I would implement this function as a Utility Class,
> and call it from the Action class.
>
> In the Utility Class you can get the HttpServletRequest instance by
> [ServletActionContext.getRequest()].
>
> In this case, you even don't need RequestHeaderInterceptor to inject
> Headers into your action, because the Utility Class will do all the
> job.
>
>
> 2010/10/27 Jose Luis Martinez Avial <jl...@pb-santander.com>:
>> Well, that's an option. Another thing I would need to get is the Remote Address. That can be complicated, since sometimes -specially when you are behind a proxy, or something like that- the IP address you get is not correct. In those cases with a proxy usually the IP is in a header in the request(For example, if you are using Apache, you will get a "x-forwarded-for" header in the request). I was thinking about doing an interceptor that can be setup to look for that header(Or one similar, that can be setup in the struts xml) and if it's not present, set the IP into the action. What do you think?
>>
>> Jose
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: RequestHeaderAware in Struts 2?
Posted by Li Ying <li...@gmail.com>.
I would implement this function as a Utility Class,
and call it from the Action class.
In the Utility Class you can get the HttpServletRequest instance by
[ServletActionContext.getRequest()].
In this case, you even don't need RequestHeaderInterceptor to inject
Headers into your action, because the Utility Class will do all the
job.
2010/10/27 Jose Luis Martinez Avial <jl...@pb-santander.com>:
> Well, that's an option. Another thing I would need to get is the Remote Address. That can be complicated, since sometimes -specially when you are behind a proxy, or something like that- the IP address you get is not correct. In those cases with a proxy usually the IP is in a header in the request(For example, if you are using Apache, you will get a "x-forwarded-for" header in the request). I was thinking about doing an interceptor that can be setup to look for that header(Or one similar, that can be setup in the struts xml) and if it's not present, set the IP into the action. What do you think?
>
> Jose
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
RE: RequestHeaderAware in Struts 2?
Posted by Jose Luis Martinez Avial <jl...@pb-santander.com>.
Well, that's an option. Another thing I would need to get is the Remote Address. That can be complicated, since sometimes -specially when you are behind a proxy, or something like that- the IP address you get is not correct. In those cases with a proxy usually the IP is in a header in the request(For example, if you are using Apache, you will get a "x-forwarded-for" header in the request). I was thinking about doing an interceptor that can be setup to look for that header(Or one similar, that can be setup in the struts xml) and if it's not present, set the IP into the action. What do you think?
Jose
-----Original Message-----
From: Li Ying [mailto:liying.cn.2010@gmail.com]
Sent: Tuesday, October 26, 2010 3:32 AM
To: Struts Users Mailing List
Subject: Re: RequestHeaderAware in Struts 2?
What Chris has said is right.
But what Jose Luis asked for is a inject mechanism likes ParameterAware which takes all the request params through one Map, but not through several property.
So I think the simpler (also more Quick And Dirty) way is:
(1)Create a interface, likes:
public interface HeaderAware {
/**
* Sets the map of request headers in the implementing class.
*
* @param headers
* a Map of headers (name/value Strings).
*/
public void setHeaders(final Map<String, String[]> headers); }
(2)implement this interface in your action class (or the common super class of all of your actions)
(3)create a interceptor, which inject the headers map to your action class likes what ServletConfigInterceptor is doing, the code will likes:
public class RequestHeaderInterceptor extends AbstractInterceptor {
@Override
public String intercept(final ActionInvocation invocation) throws Exception {
final Object action = invocation.getAction();
if (action instanceof HeaderAware) {
Map<String, String[]> requestHeaders =
this.getRequestHeaders(ServletActionContext.getRequest());
((HeaderAware) action).setHeaders(requestHeaders);
}
return invocation.invoke();
}
private Map<String, String[]> getRequestHeaders(
final HttpServletRequest request) {
Map<String, String[]> headers = new HashMap<String, String[]>();
// TODO: retrieve all the request headers by
// HttpServletRequest.getHeaderNames(), HttpServletRequest.getHeaders()
// and put them into Map
return headers;
}
}
(4)add RequestHeaderInterceptor into your interceptor-stack
2010/10/26 Chris Pratt <th...@gmail.com>:
> As far as I'm aware, there's not. But it wouldn't be hard to write one.
> You could use the ParameterInterceptor as a pattern, but have it take
> it's data from the headers rather than the parameters and you'd be
> done in 1/2 hr. You could get fancier, to make sure Parameters and
> Headers with the same name don't clash, and use an Annotation to
> identify which headers to inject into which methods, but that would definitely take more than 1/2 hr.
> =8^)
> (*Chris*)
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Internet communications are not secure and therefore Banco
Santander International does not accept legal responsibility for
the contents of this message. Any views or opinions presented
are
solely those of the author and do not necessarily represent those
of Banco Santander International unless otherwise specifically
stated.
Las comunicaciones via Internet no son seguras y por lo tanto
Banco Santander International no asume responsabilidad legal
ni
de ningun otro tipo por el contenido de este mensaje. Cualquier
opinion transmitida pertenece unicamente al autor y no
necesariamente representa la opinion del Banco Santander
International a no ser que este expresamente detallado.
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: RequestHeaderAware in Struts 2?
Posted by Li Ying <li...@gmail.com>.
What Chris has said is right.
But what Jose Luis asked for is a inject mechanism likes
ParameterAware which takes all the request params through one Map, but
not through several property.
So I think the simpler (also more Quick And Dirty) way is:
(1)Create a interface, likes:
public interface HeaderAware {
/**
* Sets the map of request headers in the implementing class.
*
* @param headers
* a Map of headers (name/value Strings).
*/
public void setHeaders(final Map<String, String[]> headers);
}
(2)implement this interface in your action class (or the common super
class of all of your actions)
(3)create a interceptor, which inject the headers map to your action
class likes what ServletConfigInterceptor is doing,
the code will likes:
public class RequestHeaderInterceptor extends AbstractInterceptor {
@Override
public String intercept(final ActionInvocation invocation) throws Exception {
final Object action = invocation.getAction();
if (action instanceof HeaderAware) {
Map<String, String[]> requestHeaders =
this.getRequestHeaders(ServletActionContext.getRequest());
((HeaderAware) action).setHeaders(requestHeaders);
}
return invocation.invoke();
}
private Map<String, String[]> getRequestHeaders(
final HttpServletRequest request) {
Map<String, String[]> headers = new HashMap<String, String[]>();
// TODO: retrieve all the request headers by
// HttpServletRequest.getHeaderNames(), HttpServletRequest.getHeaders()
// and put them into Map
return headers;
}
}
(4)add RequestHeaderInterceptor into your interceptor-stack
2010/10/26 Chris Pratt <th...@gmail.com>:
> As far as I'm aware, there's not. But it wouldn't be hard to write one.
> You could use the ParameterInterceptor as a pattern, but have it take it's
> data from the headers rather than the parameters and you'd be done in 1/2
> hr. You could get fancier, to make sure Parameters and Headers with the
> same name don't clash, and use an Annotation to identify which headers to
> inject into which methods, but that would definitely take more than 1/2 hr.
> =8^)
> (*Chris*)
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org
Re: RequestHeaderAware in Struts 2?
Posted by Chris Pratt <th...@gmail.com>.
As far as I'm aware, there's not. But it wouldn't be hard to write one.
You could use the ParameterInterceptor as a pattern, but have it take it's
data from the headers rather than the parameters and you'd be done in 1/2
hr. You could get fancier, to make sure Parameters and Headers with the
same name don't clash, and use an Annotation to identify which headers to
inject into which methods, but that would definitely take more than 1/2 hr.
=8^)
(*Chris*)
On Thu, Oct 21, 2010 at 4:36 PM, Jose Luis Martinez Avial <
jlmartinez@pb-santander.com> wrote:
> Hello,
> I'm working on an application that for security reasons needs to
> access to the request headers from an action. I know I can access to the
> request, but I'm also aware that that is not recomended. Is there a
> RequestHeaderAware or something like that, that fits that the same
> behaviour as ParameterAware, but with reference to the request headers?
>
> Thanks
>
> JL
>
>
> Internet communications are not secure and therefore Banco
> Santander International does not accept legal responsibility for
> the contents of this message. Any views or opinions presented are
> solely those of the author and do not necessarily represent those
> of Banco Santander International unless otherwise specifically
> stated.
>
> Las comunicaciones via Internet no son seguras y por lo tanto
> Banco Santander International no asume responsabilidad legal ni
> de ningun otro tipo por el contenido de este mensaje. Cualquier
> opinion transmitida pertenece unicamente al autor y no
> necesariamente representa la opinion del Banco Santander
> International a no ser que este expresamente detallado.
>
>