Javascript 停止使用AngularJS在表单中发布html标记

Javascript 停止使用AngularJS在表单中发布html标记,javascript,jquery,html,angularjs,forms,Javascript,Jquery,Html,Angularjs,Forms,我有一个表单,我希望用户不能输入html标记或脚本并以angularjs提交表单。 为此,我使用了$sanitize,但它不起作用 这是我的表格 <html> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script> <script src="//ajax.googleapis.com/ajax

我有一个表单,我希望用户不能输入html标记或脚本并以angularjs提交表单。 为此,我使用了
$sanitize
,但它不起作用

这是我的表格

<html>

  <head>
   <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular-sanitize.js"></script>
    <link rel="stylesheet" href="style.css">
    <script src="script.js"></script>
  </head>

  <body ng-app="birthdayToDo" ng-controller="main">
    <h1>Hello Plunker!</h1>
    <form name="testForm" ng-submit="submitForm(testForm.$valid)" novalidate>
      <input type="text" name="name" ng-model="testText"/>
        <p ng-show="testForm.name.$dirty && testForm.name.$invalid && testForm.submitted" class="error">
          Invalid Input
        </p>
      <input type="submit"  value="Save"/>
    </form>
  </body>
</html>

我认为你走错了方向。在angularjs和后端中使用白名单正则表达式来验证输入

为了安全起见,最佳做法是每个字段都有一个只允许某些有效输入的正则表达式。一个简单的名称是
/^[A-z,.-]+$/i
。这将在服务器端防止发送任何无效数据。这也可以放在客户端进行验证

默认情况下,Angularjs在使用
{{}
防止XSS攻击时对输出进行编码,因此
abs
将按原样显示,从安全角度来看,这是您希望防止第三方脚本在页面上执行的内容


在某些情况下,您可能希望允许html输出并安全地允许它,但在这种情况下,您可以将
ng bind html
ng sanitize
一起使用,而不需要直接使用
$sce

你想要什么?是否要阻止用户输入html标记?为什么?@WayneEllery:是的。我不希望用户输入html标记或脚本。比如,如果他想输入..一些js代码,那么表单应该是无效的。我也被限制使用正则表达式。这样做的原因是什么?因为如果他在“名称”字段中输入一些脚本,那么在显示名称列表时,它将显示脚本而不是有效名称。最佳做法是使用白名单。这是一个正则表达式,它将说明哪些字符是允许的,而不是一个黑名单,其中说明哪些字符/字符串是不允许的。你应该使用白名单
$scope.SanitizeDemo=function() {
   return $sce.trustAsHtml($scope.testText);
   };