【发布时间】: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