因此,我对PHP文件有了一个基本的.ajax()POST方法。
我需要什么安全措施?
周围有几篇文章提到使用隐藏的MD5输入字段,您可以通过AJAX发送该字段并在PHP文件中进行验证。这足够好吗?
CSRF的风险在于,外部站点可能会将数据发送到您的站点,而用户浏览器会自动将身份验证cookie与它一起发送。
您需要某种方式来执行接收操作(您的$.ajax()
方法正在向其发送POST数据),以便能够检查请求是否来自您站点上的另一个页面,而不是外部站点。
有两种方法可以执行此操作,但是建议的方法是在请求中添加令牌,您可以检查令牌,而黑客无法访问令牌。
最简单的说:
$.ajax()
包含令牌的请求中添加参数。黑客无法进入您的数据库,并且实际上无法读取您发送给用户的页面(除非他们受到XSS攻击,但这是另一个问题),因此无法欺骗令牌。
与令牌有关的所有事情是, 您可以预测 (并验证)令牌, 而黑客则不能 。
因此,最简单的方法是生成长而随机的内容并将其存储在数据库中,但是您可以构建加密的内容。我不仅会使用MD5用户名-
如果CSRF攻击者弄清楚了如何生成令牌,那么您将被黑客入侵。
另一种方法是将令牌存储在cookie中(而不是数据库中),因为攻击者无法读取或更改您的cookie,只是导致它们被重新发送。然后,您就是HTTP
POST数据中的令牌与cookie中的令牌匹配。
您可以使它们变得更加复杂,例如,每次成功使用(防止重新提交)时都会更改的令牌,或者特定于用户和操作的令牌,但这是基本模式。
我有一个Spring Boot 1.5.12应用程序,默认情况下会启用CSRF保护。我在提交POST请求时使用CSRF令牌。 但是,有些URL需要通过GET请求获取,带有cookie信息,但不需要CSRF令牌,即。 我如何强制我的Spring Boot应用程序也需要CSRF令牌来处理这样的请求? PS:我有一些关于GET请求不需要CSRF保护的意见。但是,它也应该受到保护:https://www.
当应用程序依赖于无状态身份验证(使用类似HMAC的东西)时,是否有必要使用CSRF保护? 示例: > 我们有一个单页应用程序(否则我们必须在每个链接上添加令牌:。 此内标识将用于访问诸如之类的受限URL。 令牌将始终在HTTP头内传输。 没有Http会话,也没有cookie。
随着新的工具栏小部件的引入和AppCompat(android.support.v7.widget.Toolbar)版本的推出,是否还需要调用setSupportActionbar(工具栏)?或者调用setSupportActionbar有什么好处吗;现在我们可以设置标题、子标题、导航图标、导航图标单击侦听器(getSupportActionBar()。直接在工具栏上设置DisplayHomeAs
问题内容: 因此,我四处阅读,对于拥有CSRF令牌感到非常困惑,但是我应该为每个请求还是每小时生成一个新令牌? 但是,我们最好每小时生成一个令牌,然后我需要两个会话:令牌,到期, 我将如何处理该表格?只需将echo $ _SESSION [‘token’]放在隐藏值表单上,然后在提交时进行比较? 问题答案: 如果您按照表单请求进行操作-那么基本上就可以消除CSRF攻击的发生,并且可以解决另一个常见
问题内容: 我正在使用Hibernate Search,文档和书籍说我在id字段上需要@DocumentId,以便Hibernate Search可以知道如何将索引映射到对象。 没有代码中的@DocumentId,我的代码似乎运行良好。Hibernate Search是否变得足够聪明,以至于@Id字段是一个很好的默认值?是否会引起一些不明显的问题? 谢谢你的时间! 问题答案: 如果您使用的是老式的
问题内容: 以下代码: 是/是打开JDBC连接所必需的。 我听说现代JDBC驱动程序不再需要它。但是我无法在项目中将其删除,因为我遇到了异常。我正在使用Java7和tomcat7。 什么时候可以省略构建? 问题答案: 从JDBC 4.0开始,不需要Class.forName()。 这是JDBC的Java教程的摘录。 在 早期 版本的JDBC中,要获得连接,首先必须通过调用方法Class.forNa