Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

140
Views
¿Cuál es una forma segura o una mejor práctica para deshabilitar un enlace o botón html según las condiciones de php?

Originalmente, se puede hacer clic en el enlace <a> en un archivo PHP HTML. Ahora necesito agregar PHP "if-else" para hacer que <a> no se pueda hacer clic en función de alguna condición. ¿Cómo puedo lograr esto de una manera segura?

 <? if (condition) : ?> <a> is clickable ( by using this.container.on('click', '.class-point-to-a-link', function (e) { e.preventDefault(); e.stopPropagation(); ) <? else: ?> probably using <span> or disable the link using css? <? endif; ?>

Tengo varios pensamientos, pero no estoy seguro de cuál es la mejor práctica o cómo lo harían ustedes.

  1. en la rama else, no usaré la etiqueta <a>, sino que usaré <span> o alguna otra etiqueta, por lo que javascript on("click"...) no encontrará el intervalo y no se activará la acción en absoluto. Pero me preocupa la seguridad de que alguien pueda inspeccionar y cambiar el intervalo a <a>, entonces el enlace funcionará.

  2. agregar algo de CSS al <a> para que no se pueda hacer clic? Tengo el mismo problema de seguridad.

  3. dentro de la parte on("click"...), agregaré la condición una vez más en función de los datos del backend. Este es el mejor método en el que puedo pensar, pero ¿hay una mejor manera de no aplicar la "condición if-else" dos veces?

Esta es una pregunta con varias preguntas pequeñas.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Es más seguro no generar enlaces en su código PHP a menos que desee que estén activos; si el enlace está en el código, pero está deshabilitado u oculto, es muy fácil encontrarlo simplemente viendo el código fuente de la página. Cualquier atacante normalmente hará esto como una de las primeras herramientas en su arsenal.

La forma más concisa de incluir/eliminar enlaces en línea en PHP es el operador ternario. Por ejemplo:

 echo ($enabled ? '<a href="https://example.com/url">' : '') . 'The text that would be inside the link.' . ($enabled ? '</a>' : '');

O si no le gusta el operador ternario, puede hacerlo de forma más larga con sentencias if :

 if ($enabled) echo '<a href="https://example.com/url">'; echo 'The text that would be inside the link.'; if ($enabled) echo '</a>';

El operador ternario a menudo mejora la concisión, pero a veces puede dificultar la legibilidad, aunque esto es una cuestión de opinión. Lo uso con moderación por este motivo.

De cualquier manera que lo haga, el usuario no solo nunca verá el enlace, sino que el enlace no estará en ninguna parte del código fuente de la página, a menos que usted quiera que lo esté.

Si existe algún riesgo de seguridad asociado con el hecho de que las personas puedan visitar ese enlace cuando usted no quiere que lo hagan, esta es la única forma en que lo implementaría. Lo mejor es suponer que cualquier usuario con intenciones maliciosas encontrará cualquier URL relevante en el código y lo escribirá manualmente. Por supuesto, no me detendría en eso, por seguridad, porque si es posible que el usuario vea cómo funciona su sitio, es decir, si el enlace a veces les aparece y pueden deducir la lógica y la estructura de su esquema de URL , también podrán descubrir cómo formar nuevas URL de forma dinámica, por lo que si hay alguna URL a la que no desea que accedan ciertas personas, supongo que alguien intentará acceder a ella e incorporar medidas de seguridad en el script para esa URL en sí. Incluso es posible que desee volverse completamente paranoico (¡lo recomiendo! ¡Los piratas informáticos son inteligentes!) .

about 4 years ago · Juan Pablo Isaza Report

0

Puede agregar una clase a la etiqueta para que no se pueda hacer clic en ella

Algo como:

 # php <a class="<?php if (!$isEnabled) { echo "disabled" } ?>">Link</a> # css a.disabled { pointer-events: none; cursor: default; }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!