【问题标题】:Codeigniter Ajax Risk with Get带 Get 的 Codeigniter Ajax 风险
【发布时间】:2014-03-25 00:32:59
【问题描述】:

在 Ajax 中使用 GET 方法有哪些安全隐患,在以下示例中我应该采用哪些方法来应对威胁?

在一个非常简单的实现中,我有一个 Ajax-codeigniter 代码,如下所示...没有表单提交和数据库连接..我只想将 php 函数(代码中的 targetfucntion)输出到网页(在 HTML 中的 targetDiv Div 中)任何人都可以看到该网页,无需登录...

我读过 GET 与 POST 相比有点不安全。我尝试使用 POST 方法,但它有一些问题。所以不能这样。所以我使用 GET 方法。我应该采取任何预防措施,例如输入卫生等。请帮助我! 谢谢!

控制器

class Thecontroller extends CI_Controller
{
    function __construct()
    {
            parent::__construct();
            $this->load->helper('url');
    }

   function idea_generator() {
       $this->load->view('myviewfile');
   }

   function targetfunction() {
echo somefunction();
   }
}

?>

查看文件 - “myviewfile”

<html>
<head>
<title>Title</title>
<script language="javascript">
var XMLHttpRequestObject = false;

if(window.XMLHttpRequest) {
 XMLHttpRequestObject = new XMLHttpRequest();
} else if (window.ActiveXObject) {
 XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}

function getData(dataSource,divID)
{
 if(XMLHttpRequestObject) {
   var obj = document.getElementById(divID);
   XMLHttpRequestObject.open("GET",dataSource);

   XMLHttpRequestObject.onreadystatechange = function()
   {
   if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
   {
       obj.innerHTML = XMLHttpRequestObject.responseText;
   }
   }

   XMLHttpRequestObject.send(null);

  }


}

</script>
</head>
<body>
<h1>My Cool App</h1>
<input type="button" value ="Submit!!" onclick="getData('targetfunction','targetDiv')">
<div id="targetDiv">
<p>The fetched message will appear here </p>
</div>
</body>

</html>

【问题讨论】:

  • 天哪,没有 jQuery。 POST 更好。
  • 使用 jQuery。 POST 和 GET 没有显着的安全差异。如果安全是一个问题,请将验证和清理合并到您的 AJAX 调用中。
  • 我们不能用 GET 和对策做吗?如果我们使用 GET 会有什么风险?
  • @cale_b,由于没有用户输入,我应该做什么验证/清理,我只想将 php 函数输出到 html 页面..
  • 与用户输入无关。如果有人恶意尝试使用恶意参数发布/获取您的 ajax 网址怎么办?

标签: php ajax codeigniter security get


【解决方案1】:

如果在targetfunction()方法中没有提交表单并且CodeIgniter不接受通过$this-&gt;input-&gt;get()$_GET(URL后面的参数,即?var1=value&amp;var2=value2)的任何输入,那么就没有我认为的安全漏洞能想到的。

另外,CodeIgniter sanitizes some strange characters 默认也在 GET 请求中。

【讨论】:

  • 非常感谢! targetfunction() 只是吐出一些值,它不需要任何输入。正如您所说,它不会使用 $this->input->get() 或 $_GET 处理任何形式或任何其他值。那么我可以继续使用所有代码{控制器和视图},而不用担心安全威胁吗?
  • 我可以防止像这样的 ajax url 操作吗? - 函数目标函数($dummy){ if ($dummy=='') { echo somefunction(); } }
  • 是的,先生。只要您不介意任何人都可以公开访问该网址。
  • 你拯救了我的一天,兄弟!非常感谢.. :)
猜你喜欢
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 2011-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-21
  • 2013-08-29
相关资源
最近更新 更多