Estoy trabajando con una pasarela de pago que parece tener un malentendido fundamental de los "clientes" y cómo proteger los datos confidenciales.
Las instrucciones de integración consisten principalmente en un modo de operación de "redireccionamiento", donde un cliente es dirigido al sitio web de la pasarela para ingresar los detalles de la tarjeta de crédito, donde ve un recibo y luego se le dirige a su sitio web.
Docs :
Aquí hay un ejemplo
<form
action="https://demo.myvirtualmerchant.com/VirtualMerchantDemo/process
.do" method="POST">
<input type="hidden" name="ssl_merchant_id"
value="my_virtualmerchant_id">
<input type="hidden" name="ssl_user_id" value="my_user_id">
<input type="hidden" name="ssl_pin" value="my_pin">
<input type="hidden" name="ssl_transaction_type" value="ccsale">
<input type="hidden" name="ssl_show_form" value="true">
<input type="hidden" name="ssl_amount" value="14.95">
<input type="submit" value="Click to Order">
</form>
Este es el párrafo que me preocupa:
Todos los datos confidenciales, específicamente sus credenciales de VirtualMerchant, deben colocarse en el código del lado del servidor en lugar de colocar campos de valor ocultos en un formulario HTML. Esto limitará la capacidad de los usuarios maliciosos. para editar y utilizar estos datos para sus propios fines fraudulentos. El uso de scripts del lado del servidor permite HTML personalizado para ser entregado a una máquina cliente. El código que genera el HTML personalizado es procesado en el servidor web antes de que el HTML se envíe a la máquina del usuario a través de Internet. Esto es en a diferencia de las secuencias de comandos del lado del cliente en las que se modifica el HTML, normalmente mediante java-script en el cliente máquina después de que el HTML y Java se envían desde el servidor web. La principal ventaja de usar scripts de servidor con la integración de VirtualMerchant es la capacidad de ocultar las credenciales de procesamiento confidenciales desde el navegador.
Eso suena bien, no exponer mi ID de cuenta al cliente.
Sin embargo, no creo que lo que están sugiriendo se ocupe de ello. Solo puedo ver dos formas de ocultar los detalles completamente del cliente:
-
Haga que el servidor actúe como el cliente y el navegador nunca se dirige al sitio web de la pasarela de pago
Ofrecen este modo, pero la mayoría de los documentos se refieren al modo de formulario HTML / lado del cliente en su lugar.
- Use un token firmado de algún tipo , que no son compatibles.
Este párrafo, sin embargo, parece afirmar algo sobre el uso de "scripts del lado del servidor" para entregar "HTML personalizado" y, por lo tanto, ¿ocultar los detalles? Simplemente no veo ninguna manera, incluso si la redirección se realizó a través de un encabezado Location
, los datos aún se expondrían al navegador y cualquier persona con intenciones malintencionadas podría obtenerlos fácilmente.
¿Puede alguien ayudarme a entender por qué esto me suena tan mal?