【发布时间】:2015-10-31 13:20:44
【问题描述】:
我对 codeigniter 框架还很陌生,遇到了一个我不确定如何正确解决的问题。
我的大多数应用程序都需要身份验证,但我有一个用于表单的公共非身份验证控制器。但是表单的 uri 是使用单一使用令牌编码的。所以表单只能访问一次。
我的表单操作的代码...
<?php
echo form_open('my_form/submit_form' . $id , 'id=”theForm”');
…
我想阻止某人访问/访问http://my-site.com/my_form/submit_form/someID,而是抛出一条消息。以下是我现在的工作方式,但我不确定它是否安全。我正在使用 codeigniter 的 csrf 保护,因此每个 $_POST 都使用 csrf_token 提交。
class My_Form extends MX_Controller
{
…
public function submit_form($id){
// my attempt to prevent direct access
if (!isset($_POST["input_id"])) {
exit('Sorry this page is inaccessible.');
}
}
所以基本上如果表单上隐藏输入字段的值没有设置,那么脚本就会退出。这是一种安全的处理方式吗?
【问题讨论】:
-
注意在此处使用数组
form_open('my_form/submit_form' . $id, array('id' => 'theForm'));您可能需要配置您的 routes.php 文件中的 id 以确保它可以匹配 id 其他明智使用用户指南中的uri segment()。 -
阅读本教程w3code.in/2015/10/…
-
@ Ricky -- 这如何解决我的问题。我的表单或提交表单没有任何问题,我只想让它更安全。
-
完全没问题。您可以使用 CodeIgniter 方式为
$this->input->post() OR exit('Not your cup of tea, buddy.');
标签: php forms codeigniter