I don't know.. it seems like a bad idea to place your Transaction Key in the
code..

This means you'll potentially run into problems with having other employees
or people working with the code since they might get access to it.

It also means that anyone with access to your version control system would
be able to get at your Key.

It might be better to have some combination of the two approaches.

Create a page in your app that allows you to input the Transaction Key.. and
once you submit it, the Transaction Key gets encrypted and put in the
datastore.

That way, someone would need access to your datastore and to your appcode to
figure out your Transaction Key.

And, really, if someone really wants to get at something, they can.. you
just need to make it harder to get.  It also helps to not have that
temptation there sitting out in clear text in your app code.. maybe an
employee never once thought about stealing the Transaction Key.. but one day
they see it there in the code.. and copy/paste, they've got it.  Just an
impulse grab.

It takes a lot more for them to look in the code.. see the encryption,
decryption method you are using.. and then decide to get the encrypted key
from the datastore and to then decrypt it.  That goes beyond impulse. (And,
I don't see how you could prevent a person from getting your Transaction Key
if they really wanted it and they already had access to your datastore and
to your application source code..)

Then again, I don't use authorize credit card payments.. so I don't really
know what the best practices are for things such as this.

On Thu, Sep 23, 2010 at 10:24 AM, Rick Horowitz <[email protected]> wrote:

> I am implementing authorize.net's SIM interface for credit card
> transactions, using GWT with app engine. In authorize.net's SIM API
> documentation, it states:
>
> "IMPORTANT: The merchant's Transaction Key is highly sensitive and
> should only be known by the payment gateway and the merchant. For this
> reason it is vital that the Transaction Key is stored securely and
> separately from the merchant's Web server."
>
> I'm looking for suggestions on how securely store the authorize.net
> Transaction Key. I have a couple of ideas:
>
> 1. Enter the key manually after deploying the app via a custom GWT UI
> (secured by SSL) and store it in memcache. This is inconvenient, as it
> has to be done anytime the server is re-deployed.
>
> 2. Store the key in app engine's datastore, via a custom GWT UI.
>
> 3. Hard-code the key in a class that is part of the app engine app.
>
> I'm looking for guidance on which would be most secure out of these
> options, or if anyone has a better suggestion.
>
> Thanks for any help on this,
>
> Rick Horowitz
>
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<google-appengine%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine?hl=en.

Reply via email to