Error al usar procesador de pagos con cloudflare


#1

Hola, anteriormente al utilizar cloudflare en el sitio web de un cliente funcionaba su pasarela de pagos exitosamente, es decir, nuevas compras, nuevos miembros, etc. podian hacer su compra de membresia. Sin embargo al incluir cloudflare a su sitio web (apuntando el dominio a los dns de cloudflare y su servidor con los dns de cloudflare) ha provocado que no se puedan registrar nuevos usuarios, indicado el error al hacer pruebas manualmente “POST made from IP out of range”, es decir, no se pueden crear usuarios nuevos, sea manualmente o por medio de la compra de su membresia… Ya enliste las IPs de la pasarela de pagos en la lista blanca del firewall aunque no funciono; Como Puedo hacerle saber a Cloudflare que permita la comunicacion directa con la psarela de pagos, es decir, que todo lo proveniente del plugin o script no tenga que pasar por Cloudflare? Para que funcione correctamente la pasarela de pagos.

Edito: Las pasarelas que no funcionan cuando Cloudflare esta activado (nubes naranjas) son PayPal y CCBill.

Gracias Comunidad por su ayuda


#2

Hola @arturlop cómo estás? Entiendo que por “pasarela de pagos” te referís al checkout de CCbill ó el botón de pagos que abre en nueva pestaña el cobro en Paypal… Es decir, revisa que SI ESO OCURRE EN OTRO DOMINIO (checkout.paypal…) no está bajo los efectos de CloudFlare, por lo que deberás revisar la implementación del código de pagos, información enviada por API o mediante POST sea correcta y no haya sufrido modificaciones en el proceso de armar la solicitud.

Se me ocurren dos cosas a revisar:

Lo que suele tener Paypal como seguridad y protección en su api, es tomar TU ip y url de referencia con el dominio autorizado, al conectarse con una IP de CloudFlare puede generar algún conflicto. No me ha sucedido, depende cómo lo tengas implementado (plugin, botón, api, cómo lo haces? revisaste en ayuda de paypal?).

Que el código de frame/botón/formulario que hace el envío de información no codifique correctamente la solicitud, veo que lo haces con un POST, es decir, que los valores se “rompan” en el camino. Hay un código de CloudFlare y filtros de ofuscación (https://support.cloudflare.com/hc/en-us/articles/200170016-What-is-Email-Address-Obfuscation-) que puedes investigar más y evitar que CF cachee o modifique ese fragmento. También puedes considerar DESACTIVAR la minificación, puede ocacionar estos problemas, y si trabajas con cookies puedes filtrarlas en la versión paga, desde reglas de caché.

Esto NO tiene que ver con el firewall, sino con que las pasarelas rechazan el pago por una cuestión de información corrompida o por que ellos tienen un firewall, no por el tuyo, seguramente.

Espero te haya servido, me sucedía parecido con MercadoPago y PayU, lo solucioné con estos tips, son sistemas similares.


#3

Gracias Alejandro por tus sugerencias :wink:

En PayPal quedo resuelto, pero en CCBill no queda por mas pruebas que le estoy haciendo. Te explico de nuevo: Anteriormente el sitio web estaba en un servidor y con CF activado y funcionaba muy bien CF sin ningun problema; migré el sitio web a otro servidor del mismo proveedor asi como las configuraciones iguales del servidor y CF, al usar CF en el nuevo servidor ocasionaba problemas; di de baja el sitio web en esa cuenta de email pensando que el problema era por los DNS de CF que se habian quedado “grabados” en el anterior servidor (bajo la Ip anterior) y al crear otra cuenta para que CF me asiganara nuevos DNS el problema continuaba…

Ya en el sitio web, al navegar por el sitio e ir a la pagina donde compras la membresia .com/join/ todo bien; al dar “click” para que te lleve al formulario de CCBill e ingreses tus datos de tarjeta e info de la misma, hasta aqui bien. Pero al Procesar el pago es cuando causa error “POST made from IP out of range” asi mismo al crear un usuario de forma manual igual el mismo error.

CCBill me indica que no hay “comunicacion” con el servidor para que el script “escriba” al nuevo usuario, es decir, al comunicarse hay un rechazo desde mi servidor y de igual manera las bajas de usuarios cuando esta CF activado (la nube naranja) no se procesan y sigen vigentes, aqui toca hacerlo de manera manual e igual no se puede desde el panel de CCBill, aqui es borrarlo directamente editando el archivo cargado de CCBill en mi sevidor.

En el lado de mi servidor, tengo las IPs de CCBill en la lista blanca, tambien “probe” en CF e igual las IPs de CCBill estan en la lista blanca dentro del firewall pensando que era este problema y no fue asi.

Si creo que sea un problema de cacheo al no permitir la escritura para esa Url donde se encuentra el script de CCBill, pero lo mas dificil de enteder es; si antes funcionaba bien con la misma configuracion ahora porque no lo hace?

Como puedo indicarle a CF que no cache el script y la url (donde se encuentra el script y las carpetas necesarias para la escritura y eliminacion de usuarios)? es decir, que solo lo que le indique no este cacheado para permitir la comunicacion directa y sin problema de jPOST (formularios) de CCBill con mi servidor sin pasar por CF ya que este es quien no permite la modificacion por escritura.

Como nota, aunque ya es mas que obvio creo Yo, cuando apago la proteccion de CF la creacion de usuarios funciona correctamente.

Gracias por el apoyo para la solucion de este inconveniente.


#4

No conozco CCBill en detalle, pero logro comprender tu explicación y tratar de entender el funcionamiento, por lo que te diré algunas opiniones así pruebas y ambos aprendemos la posible solución.

Si CCbill DEBIERA escribir en tu servidor algún tipo de archivo, un txt por ejemplo (y no mediante API), el problema puede ser un permiso CHMOD que al cambiarlo de un servidor a otro, haya quedado mal el permiso. Pide a soporte que “limpie” los propietarios y permisos de archivos, si usas consola hay tutoriales para hacerlo e incluso plugins de cPanel que instalan algunos hosting para facilitar esto. YO APUESTO QUE ESTA ES LA SOLUCION.

CloudFlare sólo bloquea los “upload” por cualquier método POST por más de 100Mb, quizás estés superando ese límite (y ya es muchísimo, no creo sea el problema).

Podés FILTRAR los caché de CloudFlare usando las REGLAS (rules) seleccionando dominioweb . com / registro / listado de plugin / loquesea.php por ejemplo e incluso /* con asterisco para filtrar toda una carpeta y subsiguientes, ahí le ponés “cache by pass”, también activas “disable perfomance” y también puedes desactivar “rocket” que suele dar problemas con los javascript, desactivar la ofuscación de correos (ya que todo lo que lleva formato de e-mail con @ lo suele romper para evitar scrapping de robots). Basicamente con esta configuración desactivas el 95% de cloudflare, dejando sólo la seguridad general. Acá la info completa: https://support.cloudflare.com/hc/es-es/articles/218411427-Tutorial-de-reglas-de-página en los planes pagos de CF podés hacer filtro por sesión y cookies, pero no creo lo necesites.

Otro asunto: probá CAMBIAR las claves API privada de CCbill, debe tener algún botón en su panel para modificarla, eso hará que se conecte nuevamente, retome la IP y otras protecciones que puedan tener ellos de su lado. Si tenés alguna integración con plugin, también podés:

  1. revisar el archivo htaccess de la carpeta que no tenga filtros dinámicos (generalmente no se copian en migraciones o los actualiza dinamicamente), suelen generarse con algunas pasarelas que filtra los ingresos desde un hostname ó lista de ips.

  2. desactivar y activar + cambio de api key.

  3. poner un htaccess si no existe, y establecer una regla de NO CACHE en el mismo (que cloudflare en ciertos casos respeta, por eso digo regenerar, quizás no se copio del antiguo servidor).

Limpiar TODO el caché de cloudflare, desde el botón a tal fin (justamente, quizás por reglas viejas algo quedó molestando) ó incluso PROBARLO pero NO desactivando la nube naranja, sino con la opción “desarrollador” que hace un bypass inmediato y por 3hs, ya que sino “vuelves loco” los caché y algunas cosas funcionan y otras quedan molestando; funciona mejor.


#5

Alejandro,

Los permisos son iguales como estaban en el servidor anterior, de echo, CCBill me hizo otro paquete nuevo porque pensabamos que posiblemente fuera problema de SHA del script, no fue asi… Dicho esto tambien quitamos la posibilidad de algun filtro en la carpeta o que tenga CCBill bloqueos por IP, nada de esto por el lado de ellos ni por el lado del servidor (personalmente lo he revisado), ningun problema con permisos de archivo y/o carpeta de mi lado ni de ellos.

La carpeta no pasa los 10Mb tambien descartamos esa posibilidad.

El .htacces no tiene filtros por IP o hostname (en el anterior servidor estaba igual que en el nuevo servidor).

Intentamos borrando toda la cache de CF y nada… de echo hubo unos minutos que al usar cloudflare y como no se podia comunicar el script de mi servidor con CCBill, esos minutos quedo practicamente “libre” el acceso. Se soluciono al apagar CF pero se genero un bloque del script por que no se actualizaba la informacion de los usuarios activos y vencidos, es decir, CF bloqueo toda comunicacion de CCBill hacia el script que esta en el servidor.

Practicamente, en este nuevo servidor no entiendo porque no quiere funcionar CF como anteriormente, mismo Proveedor, misma configuracion del servidor y de CF… no logro entenderlo, pruebas y mas pruebas me han dejado ya sin ideas…

Actualmente uso el metodo “Control-Cache public” dentro del htacces para que depende el navegador guarde las imagenes dentro de su propia cache local y ahorrar ancho de banda, pero es una pena que CF en este punto no logre estar estable.

No he probado el metodo de filtrar con las reglas de CF, ya en este punto estoy un poco liado y cansado de tener que estar monitoreando los accesos para prevenir “el ingreso libre”, comunicarme con CCBill para que si sale mal puedan crear otro paquete nuevo y subirlo que como te dije cuando esto pasa regularmente se debe crear otro paquete porque el anterior me lo echa a perder CF (de todas las pruebas que e echo el 25% me han creado otro paquete nuevo para descartar muchos posibles errores), esos minutos se vuelven horas, tu me entiendes…

Si puedes comunicarte fuera de aqui con gusto te comparto capturas de CF para que en base a tu experiencia puedas darme algunas opiniones mas acertadas, ya que no se que mas hacer e inclusive pueda resolver futuros problemas de este tipo en la comunidad.

Gracias y un saludo.


#6

Alejandro,

En Page Rules, bajo Crear una Regla de Pagina, no veo la opcion de “cache by pass”… espero puedas ayudarme con esto para elegir la opcion que posiblemente cambiaron el nombre.

Gracias


#7

Esta es la opción, estimado: https://support.cloudflare.com/hc/article_attachments/115000333432/Screenshot_from_2017-05-10_12-48-31.png “cache level -> bypass” y luego puedes ir a desactivar perfomance, y también disable apps, que pueden generar conflicto. En esta se ve mejor el menú desplegado: https://support.cloudflare.com/hc/article_attachments/115000333392/Screenshot_from_2017-05-10_12-47-18.png


#8

Otra opción también es poner la suscripción, formulario y sección de pagos en un subdominio y desactivarle la nube naranja, con eso queda expuesto a la configuración de servidor (que es lo que ya probaste y funcionó), pero en vez de todo el dominio, sólo dejarlo en un subdominio, manteniendo seguridad y velocidad en el resto (aunque con la configuración de desactivar caché bypass y disable perfomance, en una regla bien configurada, atención a las variables url.com/payload/* y /$ puedes resolverlo). Lee la documentación de ayuda https://support.cloudflare.com/hc/en-us/search?utf8=✓&query=magento , hay varias opciones pensadas para woocommerce, magento, etc, de todo eso debes sacar alguna configuración útil adaptada a ccbill.

Por último, se me ocurre que si en tu nuevo servicio de hosting, a donde te mudaste, tenés activado el plugin de CF a nivel servidor o CMS; con eso “descifras” la IP del visitante, que es lo que pedía el primer error al comienzo del hilo. Si en el plan anterior lo tenías y ahora no, quizás debas retomar esa revisión en configuración, ya que sino los pagos se hacen con la IP de CloudFlare (ya que funciona como un proxy inverso, y con el plugin sí se devela la ip del visitante).