创建了我自己的PHP API
你好,StackOverflow社区 目前我在一个小项目中,需要一个API。 我测试了一些soapwsdl和restfulapi,但没有一个对我有效。所以我创建了自己的API。由于我不是专业的编程人员,我想知道我的API是否不安全创建了我自己的PHP API,php,api,Php,Api,你好,StackOverflow社区 目前我在一个小项目中,需要一个API。 我测试了一些soapwsdl和restfulapi,但没有一个对我有效。所以我创建了自己的API。由于我不是专业的编程人员,我想知道我的API是否不安全 <?php class API{ public function __construct(){ if($_SERVER['REQUEST_METHOD'] === 'POST'){ if(!empty($_POST)){
<?php
class API{
public function __construct(){
if($_SERVER['REQUEST_METHOD'] === 'POST'){
if(!empty($_POST)){
$data_array = array();
require_once('PreparePOST.php');
foreach($_POST as $key => $value)
array_push($data_array,array($value => $key));
echo new PreparePOST($data_array);
}else{return new Exception('No Data Requested');}
}else{return new Exception('Request not allowed');}
}
}$init = new API();
?>
在PreparePOST$data_数组之后,进行了一些认真的验证和安全工作;
例如,仅允许参数和字符转义
注意:这只是GET实现的后期实现,API Auth令牌稍后将可用
你在想什么?
这是胡说八道吗?
哪里可能存在安全问题?
如何改进我的代码?
顺便说一句,我的项目是一个工具,它将客户提供的服务器信息(如高清容量和备份日志)传输到我们的服务器,因此我们对所有服务器进行统计评估
谢谢你的建议
KR正如您所说,PreparePOST对象执行验证和安全性,最好也共享该代码以识别安全问题
尽管不是安全问题,但有一件事会立即浮现在脑海中,那就是您应该抛出异常,而不是返回异常。此外,当您初始化API对象时,您无法捕获它可能抛出的异常。请参阅我在下面放置的try-catch块
此外,代码不是超级可读的,也许这样更好:
<?php
class API
{
public function __construct()
{
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
if(!empty($_POST))
{
$data = array();
require_once('PreparePOST.php');
foreach($_POST as $key => $value)
{
array_push($data, array($value => $key));
}
echo new PreparePOST($data);
}
else
{
throw new Exception('No Data Requested');
}
}
else
{
throw new Exception('Request not allowed');
}
}
}
try
{
$init = new API();
}
catch(Exception $e)
{
//handle the exception here
echo $e->getMessage();
}
?>
具体的编码风格取决于您的偏好,但是为了保持可读性和可维护性,您必须充分利用空白。将代码捆绑在一起绝对没有任何好处。事实恰恰相反
我不会说有必要调用$data变量$data\u数组。您可以从代码中看到它是一个数组,也可以使用逗号和可读性空格分隔函数的参数,。调用array_push时。好的,首先,去查看,然后阅读所有内容,它应该会给您一些帮助!我投票结束这个问题,因为它要求对代码进行审查,因此过于宽泛/基于观点。它可能会调整为主题。非常感谢!它帮助了我很多。如果你觉得它有帮助,请考虑将答案标记为点击点击在接收到的答案的左边的投票数。