>
我正在使用OWASP CSRFGuard 3.0保护这些Restful服务不受CSRF的影响。
当使用简单的超文本标记语言访问相同的Rest服务时-AJAX请求-CSRF令牌正在设置,我得到了响应:
下面的代码工作正常。
<!DOCTYPE html>
<html>
<head>
<title>REST Service with CSRF Protection</title>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<!-- First Get call OWASP CSRFGuard JS servlet which sets the token -->
<script src="http://localhost:8088/SpringRestCSRF/CsrfJavaScriptServlet"></script>
<script type="text/javascript">
$(document).ready(function() {
$.ajax({
url : "http://localhost:8088/SpringRestCSRF/rest/rest/greeting",
type: 'POST',
}).then(function(data, status, jqxhr) {
$('.greeting-id').append(data);
console.log(data);
});
});
</script>
</head>
<body>
<div>
<p class="greeting-id">The Response is is : </p>
</div>
</body>
</html>
角度代码(我对角度代码非常陌生)
<!DOCTYPE html>
<html lang="en">
<head>
<script
src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<!-- Assumption - First Get call to OWASP CSRFGuard JS servlet which sets the token -->
<script src="http://localhost:8088/SpringRestCSRF/CsrfJavaScriptServlet"></script>
</head>
<body ng-app="myapp">
<div ng-controller="MyController">
<button ng-click="testPost(item, $event)">Send AJAX Request</button>
<br /> Data from server: {{myData.fromServer}}
<br /> Cookie Value {{$cookies}}
</div>
<script>
/*----------------*/
var app = angular.module('myapp', []);
app
.controller(
'MyController',
function($scope, $http) {
$scope.result = "";
$scope.init = function() {
$http.defaults.xsrfHeaderName = 'X-CSRF-TOKEN';
$http.defaults.xsrfCookieName = 'CSRF-TOKEN';
};
$scope.testPost = function() {
$http
.post(
'http://localhost:8088/SpringRestCSRF/rest/rest/greeting')
.success(function(result) {
$scope.result = result;
$scope.myData.fromServer = data;
});
};
});
</script>
</body>
</html>
有人能建议我如何设置角形标记吗。
引自:
在寻找此问题的解决方案时,请阅读以下语句。
跨站请求伪造(XSRF)保护XSRF是一种技术,通过这种技术,未经授权的站点可以获取用户的私人数据。Angular提供了一种对抗XSRF的机制。执行XHR请求时,$超文本传输协议服务从cookie(默认情况下为XSRF-TOKEN)读取令牌,并将其设置为HTTP标头(X-XSRF-TOKEN)。因为只有在您的域名上运行的JavaScript才能读取cookie,所以您的服务器可以确信XHR来自在您的域名上运行的JavaScript。不会为跨域请求设置标头。
为了利用这一点,您的服务器需要在第一个HTTP GET请求上设置一个名为XSRF-TOKEN的JavaScript可读会话cookie中的令牌。在随后的XHR请求中,服务器可以验证cookie是否匹配X-XSRF-TOKEN HTTP头,因此确保只有在您的域上运行的JavaScript才能发送请求。令牌对于每个用户必须是唯一的,并且服务器必须可以验证(以防止JavaScript创建自己的令牌)。我们建议令牌是您网站身份验证cookie的摘要,带有盐,以增加安全性。
可以使用配置时的$http pProvider.defaults、运行时的$http.defaults或每个请求配置对象的xsrfHeaderName和xsrfCookieName属性指定标头的名称。
但是如果你仍然使用旧版本,你可以使用这个:
var app = angular.module('myapp', []);
app.config(function($httpProvider) {
$httpProvider.defaults.xsrfCookieName = 'XSRF-TOKEN';
$httpProvider.defaults.xsrfHeaderName = 'X-XSRF-TOKEN';
});
app.controller ...etc
大家好,我很难为我的应用程序设置安全解决方案!!所以我有一个REST API后端,在http://localhost:51030使用Spring框架开发,对于前端,我有一个Angular 2应用程序(最新版本A.K.A.Angular 4),运行速度为http://localhost:4200.我在后端设置了CORS配置,如下所示: 使用此配置只能正常工作,我可以执行从角应用到回弹的请求并获得响应
问题内容: 如何在指令中设置插值?我可以从以下代码中读取正确的值,但无法设置它。 js: HTML: 我的控制器范围内的值在哪里? 问题答案: 如果要在范围上设置值,但不知道属性名称(提前),则可以使用以下语法: 如果属性中的字符串包含点(例如),则将无法使用;您可以用来做作业: 如果使用隔离范围,则可以使用批注: 您可以在此Angular /jQuery颜色选择器JSFiddle示例中看到一个示
如果HTTP POST返回一个HTTP 403禁止,但对HTTP GET有效,那么问题很可能与CSRF有关。提供CSRF令牌或禁用CSRF保护(不推荐)。 那么,a怎么能做到这一点呢?
问题内容: 我有一个使用elasticsearch-jetty项目的嵌入式Elasticsearch,并且我需要设置为比默认值更好地使用标记器。我想使用关键字标记器。 我一辈子都想不通如何通过配置文件来做到这一点。谁能指出我通过配置文件执行此操作的方法? 顺便说一句,是否可以通过对索引执行POST来在启动和运行时调整索引?我真的很想了解如何使用它,谢谢。 编辑/更新:我在将curl -XPUT或-
我读过关于CSRF和不可预测的同步令牌模式是如何用来防止它的。我不太明白它是如何工作的。 让我们以这个场景为例: 用户使用以下表单登录到站点: 服务器还将令牌存储在会话中。发送请求时,它将表单数据中的令牌与会话中的令牌进行比较。 当黑客可以编写JavaScript代码时,如何防止CSRF: 发送GET请求到站点 接收包含请求表单的html文本。 在html文本中搜索CSRF令牌。 使用该令牌发出恶
我们基于Angular的webapp与运行在不同域和上下文路径上的企业门户集成。我使用基于Spring Security的CSRF令牌来验证传入的请求。该应用程序在本地运行得非常好,但当我将其与门户集成时,所有post调用都失败了403,因为Angular无法读取XSRF令牌并将请求头中的X-XSRF-Token设置为API调用。经过调查,我发现门户和我们的应用程序的上下文路径不同,因此sprin