我正在构建一个专门为其请求和响应内容使用JSON的Web服务(即,没有表单编码的有效负载).
如果以下情况属实,Web服务是否容易受到CSRF攻击?
POST
例如,没有顶级JSON对象的任何请求{"foo":"bar"}
将被拒绝400.例如,POST
具有该内容的请求42
将因此被拒绝.
POST
具有除内容类型之外的任何请求application/json
将被拒绝400.例如,POST
具有内容类型的请求application/x-www-form-urlencoded
将因此被拒绝.
所有GET请求都是安全的,因此不会修改任何服务器端数据.
客户端通过会话cookie进行身份验证,Web服务在通过带有JSON数据的POST提供正确的用户名/密码对后为其提供,例如{"username":"user@example.com", "password":"my password"}
.
补充问题:是PUT
和DELETE
要求日益容易受到CSRF?我问,因为似乎大多数(所有?)浏览器都不允许HTML表单中的这些方法.
编辑:添加了第4项.
编辑:到目前为止,有很多好的评论和答案,但没有人提供过这种Web服务易受攻击的特定CSRF攻击.
在了解Go的依赖管理时,我经常听到用作动词的术语"供应商".示例:"应用程序供应商的依赖项......"
在这种情况下供应依赖是什么意思?
例子:
"使用您的应用程序销售的依赖关系"
资料来源:https://devcenter.heroku.com/articles/getting-started-with-go#declare-app-dependencies
"godep将编写出售的代码"
资料来源:https://github.com/tools/godep#go-15-vendor-experiment
后续问题:
这与Ruby中的vendoring有关吗?
这个术语是在Go 1.5供应商实验中完全定义的,还是有一个单独的传统定义?
我正在构建一个Django应用程序,它使用Django的翻译功能来提供多种语言的本地化.但我也在使用Django的翻译功能,根据当前登录用户的设置将某些术语翻译成不同的行业.
例如,对于在学习评估行业工作的英语用户,我想要以下行为:
对于页面的给定请求:
"learning-assessment-de".po文件只会翻译项目中所有字符串的子集,因为它只能翻译某些行业特定的术语.
这是个问题:
当一个字符串丢失时,我希望Django回退到德语(在上面的步骤#1中确定)而不是英语(我在settings.py中的默认语言).
我的默认英语/德语.po文件将假定某个行业.
这可能吗?
是否可以使用TastyPie将ForeignKey
字段更新为None
?
相关问题:在PUT期间,tastypie不会删除foreignkey引用
是)我有的:
class SomeObject(models.Model):
some_field = models.ForeignKey(SomeOtherObject, null=True)
Run Code Online (Sandbox Code Playgroud)
(当然还有相应的TastyPie资源类可以更新其他字段)
我想要的是:
要更新some_field
为None
使用TastyPie.
我尝试过(在JavaScript中):
$.put('/my/api/model/someobject/42/', { some_field: null });
$.put('/my/api/model/someobject/42/', { some_field: '/my/api/model/someotherobject/null/' });
$.put('/my/api/model/someobject/42/', { some_field: '' });
$.put('/my/api/model/someobject/42/', { some_field: 0 });
$.put('/my/api/model/someobject/42/', { some_field: false });
Run Code Online (Sandbox Code Playgroud)
等等.这些都导致404或400.一些导致204,但数据库未更新.
通过阅读代码full_dehydrate()
,目前似乎不可能这样做.
我查看了github上最近的代码,我不相信这是可能的.
我在我的AngularJS应用程序中使用基于哈希的导航/
.
如果用户导航到我的应用程序,请执行以下操作:
http://example.com/?foo
页面加载后的一刻,某些东西(可能是Angular)导致地址栏看起来与我预期的不同.
我看到了什么:
http://example.com/?foo#/?foo
我期望看到的内容:
http://example.com/?foo#/
为什么会发生这种情况,我可以将其关闭吗?
我在模板上下文中有一个日期,我想在渲染输出中显示该日期加上7天.
这样的东西(不存在):
{{some_date|plus_days:7}}
如何在不编写任何Python代码的情况下在Django模板中执行此操作?
如果我的HTML引用了我$scope
不存在的名称,我如何指示Angular通知我?
输入示例:
<div ng-controller="MyController">
{{oops}} <!-- This name does not exist in my $scope -->
</div>
Run Code Online (Sandbox Code Playgroud)
期望的输出:
<div ng-controller="MyController">
ERROR: No such name: "oops"
</div>
Run Code Online (Sandbox Code Playgroud)
在Django中,这可以通过TEMPLATE_STRING_IF_INVALID
设置来实现.
django ×3
angularjs ×2
javascript ×2
python ×2
csrf ×1
go ×1
http ×1
rest ×1
security ×1
tastypie ×1
terminology ×1
translation ×1
web ×1