2017-05-10 1 views
0

Récemment, quelqu'un m'a montré comment ils pouvaient exécuter quelque chose sur un site MVC en mettant une valeur que le site ne s'attendait pas dans l'URL et le message de validation par défaut MVC pour ensuite l'a exécuté.URL avec charge utile comme Start {{sum = (2 * 2.0)}} End s'exécute dans le message de validation rasoir pour helper

Ils ont fait quelque chose comme:

?page=Start%20%7B%7Bsum%3d(2*2.0)%7D%7D%20End 

qui le site Web mis dans le message de validation comme "La valeur 'Start 4 END' est pas valable pour la page." Donc, il a fait la somme.

Sur le même site, cela n'a pas fonctionné pour essayer de mettre javascript et de l'exécuter. Donc, je suis un peu confus et je ne trouve aucune information sur l'injection de ce type de code dans un site. Alors, est-ce un gros problème? Quel autre type de code pourriez-vous exécuter en utilisant cette syntaxe? Comment le réparerais-tu pour que ça ne puisse pas?

Mise à jour - informations complémentaires:

la version MVC est 4

La propriété page est définie comme:

public class SearchContext 
{ 
    public int Page { get; set; } 
} 

Ceci est transmis à un contrôleur pour que la page se souvient lorsque la l'utilisateur revient:

[HttpGet] 
public ActionResult Create(SearchContext searchOptions) 
{ 
    var viewModel = new MyViewModel(){ 
     SearchOptions = searchOptions 
    }; 
    // ..... 
    return View(viewModel); 
} 

Le fichier de rasoir a alors:

@using (Html.BeginForm()) 
{ 
    @Html.AntiForgeryToken() 
    @Html.HiddenFor(m => m.SearchOptions.Page) 

    // ValidationSummary calculating 'Start 4 End'?? 
    @Html.ValidationSummary(false) 

    // ... form fields .... 

    <span class="right"> 
     <input type="submit" value="Save" class="button saveOrSubmit" /> 
    </span> 
    @Html.ActionLink("Cancel", "Index", Model.SearchOptions) 
} 

échantillons:?

Utilisation/Créer = Bonjour enter image description here

Utilisation/Créer = Début% 20% 7B% 7Bsum% 3d (2 * 2,0)% 7D% 7D% 20End enter image description here

+0

Veuillez fournir plus d'informations sur la façon dont cela se passe. Plus précisément, il serait utile de voir le code Razor pour afficher le message de validation et la définition de la propriété 'page'. Par curiosité, j'ai essayé de recréer cela et je ne pouvais pas. –

Répondre

0

Ok, vient de découvrir qu'il est une page angulaire et le résumé se trouve dans la portée qu'elle est évaluée par angulaire ...