Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 针对CSRF保护API?_Php_Ajax_Api_Csrf - Fatal编程技术网

Php 针对CSRF保护API?

Php 针对CSRF保护API?,php,ajax,api,csrf,Php,Ajax,Api,Csrf,我有一个PHP API,我的网站正在使用Ajax请求 我可以使用该API执行的一个操作示例是(登录用户、更改密码、检索敏感数据) 简单地说,在使用此API时,如何防止CSRF?对我来说,理解它的方式似乎有点复杂 我使用HTTPS连接来执行这些操作。。但我认为这还不足以保证手术的安全 您需要使用同步器令牌。我不认为我能把它说得比你更好: 为了促进“透明但可见”的CSRF解决方案,鼓励开发人员采用同步器令牌模式()。同步器令牌模式需要生成与用户当前会话关联的随机“质询”令牌。然后将这些质询令牌插入与

我有一个PHP API,我的网站正在使用Ajax请求

我可以使用该API执行的一个操作示例是(登录用户、更改密码、检索敏感数据)

简单地说,在使用此API时,如何防止CSRF?对我来说,理解它的方式似乎有点复杂


我使用HTTPS连接来执行这些操作。。但我认为这还不足以保证手术的安全

您需要使用
同步器令牌
。我不认为我能把它说得比你更好:

为了促进“透明但可见”的CSRF解决方案,鼓励开发人员采用同步器令牌模式()。同步器令牌模式需要生成与用户当前会话关联的随机“质询”令牌。然后将这些质询令牌插入与敏感服务器端操作相关联的HTML表单和链接中。当用户希望调用这些敏感操作时,HTTP请求应包含此质询令牌。然后,服务器应用程序负责验证该令牌的存在性和正确性。通过在每个请求中包含质询令牌,开发人员可以很好地控制用户是否确实打算提交所需的请求。在与敏感业务功能相关联的HTTP请求中包含所需的安全令牌有助于减轻CSRF攻击,因为成功利用此漏洞的前提是攻击者知道目标受害者会话随机生成的令牌。这类似于攻击者能够猜测目标受害者的会话标识符。下面的概要描述了将质询令牌合并到请求中的一般方法

当Web应用程序制定请求时(通过在用户提交或单击时生成导致请求的链接或表单),应用程序应包含一个隐藏的输入参数,该参数具有公共名称,如“CSRFToken”。此令牌的值必须随机生成,以便攻击者无法猜测。考虑利用java应用程序的JavaSoalTy.SoCurrand类来生成足够长的随机令牌。替代生成算法包括使用256位BASE64编码哈希。选择此生成算法的开发人员必须确保散列生成随机令牌的数据具有随机性和唯一性

通常,开发人员只需为当前会话生成一次此令牌。初始生成此令牌后,该值存储在会话中,并用于后续的每个请求,直到会话过期。当最终用户发出请求时,服务器端组件必须与会话中找到的令牌相比,验证请求中令牌的存在和有效性。如果在请求中未找到令牌或提供的值与会话中的值不匹配,则应中止请求,重置令牌,并将事件记录为正在进行的潜在CSRF攻击

为了进一步提高这个设计的安全性,考虑随机化CSRF令牌参数名和每个请求的值。实现这种方法会生成每请求令牌,而不是每会话令牌。但是,请注意,这可能会导致可用性问题。例如,“后退”按钮浏览器功能经常受到阻碍,因为上一页可能包含不再有效的令牌。与上一页的交互将导致服务器发生CSRF误报安全事件。无论采取何种方法,都鼓励开发人员以保护经过身份验证的会话标识符的方式保护CSRF令牌,例如使用SSLv3/TLS