Is het een goede praktijk om een ​​lege URL te gebruiken voor het actiekenmerk van een HTML-formulier? (Actie = “”)

Ik vraag me af of iemand een reactie van ‘beste praktijken’ kan geven op het gebruik van lege HTML-formulieracties om terug te posten naar de huidige pagina.

Er is Een bericht waarin wordt gevraagd wat een blanco HTML-formulieractie hier is en sommige pagina’s deze ene suggereren dat het prima is, maar ik ‘ Ik wil graag weten wat mensen denken.


Antwoord 1, Autoriteit 100%

Het beste wat je kunt doen, is het attribuut van de actie helemaal weg. Als u het weg laat, wordt het formulier ingediend bij het adres van het document, d.w.z. dezelfde pagina.

Het is ook mogelijk om het leeg te laten en elke browser implementeert HTML’s Form Submission Algoritme zal het behandelen als gelijk aan het adres van het document, dat het voornamelijk doet, wat is hoe browsers momenteel werken:

8.Laat actie het actie .

9.Als actie de lege touw is, laat actie het adres van het document .

Opmerking: deze stap is een Zalige overtreding van RFC 3986, die hier de basis-URL-verwerking nodig heeft. Deze overtreding wordt gemotiveerd door een verlangen naar compatibiliteit met legacy-inhoud. [RFC3986]

Dit werkt absoluut in alle huidige browsers, maar werkt mogelijk niet zoals verwacht in sommige oudere browsers (Browsers doen rare dingen met een lege actie =” “attribuut ), daarom De specken ontmoedigt de auteurs sterk om het leeg te maken :

De actionen formactionContentattributen, indien aangegeven, moet een waarde hebben die een Geldige niet-lege URL mogelijk omgeven door spaties .


Antwoord 2, Autoriteit 27%

Eigenlijk, de formulier inzending subsectie van de Huidige HTML5-concept staat niet toe action="". Het is tegen de specificaties.

De actionEN formactionInhoudskenmerken, indien aangegeven, moet een waarde hebben die een geldig niet-leeg URL wordt omringd door spaties . (Nadruk toegevoegd)

De genoteerde sectie in Mercator’s antwoord is een vereiste op implementaties , niet Auteurs . Auteurs moeten de auteurvereisten volgen. Om te citeren hoe deze specificatie te lezen :

In het bijzonder zijn er conformiteitsvereisten die van toepassing zijn op producenten, bijvoorbeeld auteurs en de documenten die ze creëren, en er zijn conformiteitsvereisten die van toepassing zijn op consumenten, bijvoorbeeld webbrowsers. Ze kunnen worden onderscheiden door wat ze nodig hebben: een vereiste op een producent stelt wat toegestaan ​​is, terwijl een vereiste op een consument staat hoe software op handelt.

De wijziging van HTML4 – die een lege URL-nummer toestond, is gemaakt omdat “Browsers doen rare dingen met een lege action=""attribuut “. Gezien de reden voor de verandering, is het waarschijnlijk het beste om dat ook niet in HTML4 te doen.


Antwoord 3, Autoriteit 6%

Niet inclusief het ACTION-kenmerk opent de pagina tot iframe clickjacking aanvallen, waarbij een paar eenvoudige stappen zijn:

  • Een aanvaller wikkelt uw pagina in een IFRAME
  • De IFRAM-URL bevat een queryparam met dezelfde naam als een formulierveld
  • Wanneer het formulier wordt ingediend, wordt de querywaarde ingevoegd in de database
  • De identificerende informatie van de gebruiker (e-mail, adres, enz.) Is aangetast

referenties


Antwoord 4, Autoriteit 6%

Dit is valideren met HTML5.

<form action="#">

Antwoord 5, Autoriteit 4%

In HTML 5 action=""wordt niet ondersteund, dus doe dit niet. Slechte praktijk.

Indien u in plaats daarvan volledig negeert, dient u standaard op dezelfde pagina in te dienen, ik geloof dat dit de beste praktijken is:

<form>This will submit to the current page</form>

Als u het formulier gebruikt met PHP, wilt u mogelijk het volgende overwegen. Lees hier meer over.

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Als alternatief kunt u #in gedachten gebruiken, hoewel dit zal gedragen als een anker en naar de bovenkant van de pagina te bladeren.

<form action="#">

Antwoord 6

Ik denk dat het het beste is voor expliciet -toestand waar de formulierpalen. Als u volledig veilig wilt zijn, voert u hetzelfde URL in dat het formulier is ingeschakeld in het ACTION-kenmerk als u wilt dat deze op zichzelf wordt ingediend. Hoewel de mainstream-browsers ""op dezelfde pagina evalueren, kunt u niet garanderen dat niet-mainstream-browsers.

En natuurlijk, de volledige URL inclusief gegevens zoals judgelen.


Antwoord 7

Gebruik gewoon

?

<form action="?" method="post" enctype="multipart/form-data" name="myForm" id="myForm">

Het is geen schending van HTML5-normen.


Antwoord 8

Ik heb dit veel gedaan toen ik met Classic ASP werkte. Meestal heb ik het gebruikt toen Server-Side-validatie nodig was van een soort voor de invoer (vóór de dagen van Ajax). De hoofdtraft terug, ik zie dat het geen programmeerlogica van de presentatie scheidt, op het bestandsniveau.


Antwoord 9

Ik gebruik om helemaal geen actiekenmerk op te geven. Het is eigenlijk hoe mijn raamwerk is ontworpen, alle pagina’s worden exact op hetzelfde adres ingediend. Maar vandaag ontdekte ik het probleem. Soms leen ik actie-attribuutwaarde om een ​​achtergrondoproep te maken (ik vermoed dat sommige mensen ze Ajax noemen). Dus ik vond dat dat wil zeggen de actie-attribuutwaarde bijhoudt als leeg als de actieattribuut niet is opgegeven. Het is een beetje vreemd in mijn begrip, omdat als er geen actie-attribuut is opgegeven, de JavaScript-tegenhanger op zijn minst ongedefinieerd moet zijn. Hoe dan ook, mijn punt is voordat je de beste oefening kiest die je nodig hebt om meer context te begrijpen, zoals je het kenmerk in Javascript gebruikt of niet.


Antwoord 10

Wanneer u lege actie plaatst, beschouwt sommige beveiligingsfiltratie het kwaadaardig of phishing. Daarom kunnen ze uw pagina blokkeren. Dus het is raadzaam om actie niet te houden = leeg.

Other episodes