gpt4 book ai didi

javascript - 停止使用 AngularJS 在表单中发布 html 标签

转载 作者:行者123 更新时间:2023-12-02 16:37:36 27 4
gpt4 key购买 nike

我有一个表单,我希望用户无法在其中输入 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>

一旦输入无效的内容,就会显示错误消息。我正在使用这个概念

$scope.SanitizeDemo=function() {
return $sce.trustAsHtml($scope.testText);
};

My Plunker

最佳答案

我认为您的处理方式是错误的。在 AngularJS 和后端中使用白名单正则表达式来验证输入。

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

默认情况下,Angularjs 在使用 {{}} 时对输出进行编码为了防止 XSS,所以 <b>abs</b>将按原样显示,从安全 Angular 来看,这就是您想要的,以防止第三方脚本在您的页面上执行。

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

关于javascript - 停止使用 AngularJS 在表单中发布 html 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27792887/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com