有啥方法需要防止 url 注入?

Posted

技术标签:

【中文标题】有啥方法需要防止 url 注入?【英文标题】:Is there any way i need to protect from url injection?有什么方法需要防止 url 注入? 【发布时间】:2016-03-09 22:11:24 【问题描述】:

我需要连接到特定公司的 API,他们提供了一个简单的 api,您可以通过简单的 url 获取数据。 例如:https://example.com?user=xxx&pass=xxx&data=specificdata

我的问题是:

我有一个获取参数并连接到 api 的函数:

public function urlRequest($base_url, $company_id, $user_name, $password, $parameters) 
    if (isset($base_url) && isset($company_id) && isset($user_name) && isset($password) && count($parameters) > 0) 
        $url = "https://$base_url?compID=$company_id&user=$user_name&pass=$password&$parameters";
        $response = file_get_contents($url);
        $response = json_decode($response, true);
        return $response;
    

1.我有什么方法可以防止 url 注入,如果有,哪些功能可以与之相关? (htmlentities等...)

2.哪些字符不能在url中需要保护,这类似于sql注入吗?

【问题讨论】:

它不是你的 api,你不需要对传递给它的变量做任何事情。 【参考方案1】:

适合保护url,如果有cursiosas的人改变url的id,可能会看到其他用户的数据。

它可以用md5函数php保护它,我举个小例子。

<?php

//Put it on a directoria safty and include it to get value.
$clave = "4Vee[TL&]=cA;kv-SYVg&vVKz!teJ_PW93G*u>F6z[R)]-TMeW.~Q&Ee(qyag?_KC@]&=_sc1(jkc7p~b-d)|tNV^qRQ^>@2";

//Set safety, for URL.
$company_id = $ConDB->real_escape_string($row['company_id']);               

//Protect 'URL' for our page.
$protectid = md5($clave.$company_id);

//Your function.
public function urlRequest($base_url, $company_id, $user_name, $password, $parameters) 
    if (isset($base_url) && isset($company_id) && isset($user_name) && isset($password) && count($parameters) > 0) 
        $url = "https://$base_url?compID=$protectid&user=$user_name&pass=$password&$parameters";
        $response = file_get_contents($url);
        $response = json_decode($response, true);
        return $response;
    




//To see return the outcome data, let we see how we can bring back our results with the md5 function (page: base_url)

$id = $_GET['compID'];//GET 'ID' 'URL' with protected.

//query
$sql = "SELECT * FROM yourtable WHERE md5(CONCAT('$clave', company_id)) = '$id'";
$resultado = $ConDB->query($sql);



?>

【讨论】:

以上是关于有啥方法需要防止 url 注入?的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis怎么防止SQL注入

ASP程序防止SQL注入的最好办法?

struts2怎么防止sql注入

防止SQL注入的一些解决方法

MyBatis怎么防止SQL注入

php中防止SQL注入的方法