向PHP脚本发送请求时出现错误的符号

塔拉斯·尼克林(Taras Nikulin)

通过我的应用程序,我向网站上的PHP脚本发送了一个请求。

在我的应用中,我配置了一个类似于以下内容的字符串:name=John&pass=apricot&constKey=12345

然后,在该字符串上使用哈希,并收到类似以下内容:blablabla25现在是localKey。

然后,我将最终的字符串发送name=John&pass=apricot&localKey=blablabla25到PHP脚本。

在我的PHP脚本中,我将使用除了localKey(name=John&pass=apricot之外的此字符串,并添加存储在PHP文件中的constKey。我再次得到字符串name=John&pass=apricot&constKey=12345那挺好的。

然后,我对该字符串进行哈希处理,然后将其与localKey进行比较blablabla25如果键相等,则一切正常。在大多数情况下,它可以正常工作。

但有时我会发送以下信息:text=I'm happy.That's why I'm dancing而且我收到错误消息,因为当我在Swift中对字符串进行哈希处理时,它看起来是相同的。当我在PHP中对该字符串进行哈希处理时-撇号被替换为这样的东西-\\\'

这是我的Swift和PHP文件代码的一部分。

post = post + "key=\(sign)"
    post = post.stringByAddingPercentEncodingWithAllowedCharacters(.URLHostAllowedCharacterSet())!
    post = post.stringByReplacingOccurrencesOfString("+", withString: "%2B")

    let postData = post.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
    let postLength = "\(postData?.length)"

    let url: NSURL = NSURL(string: "http://google.com/admin.php")!
    let request:NSMutableURLRequest = NSMutableURLRequest(URL:url)

    request.URL = url
    request.cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringCacheData
    request.HTTPMethod = "POST"
    request.setValue(postLength, forHTTPHeaderField: "Content-Length")
    request.setValue("application/x-www-form-urlencoded" , forHTTPHeaderField: "Content-Type")
    request.HTTPBody = postData

和PHP文件

$key = NULL;
if (isset($POST['key'])) $key = mysql_real_escape_string($_POST['key']);
if (!$key)
    {
        exit();
    }

    $login = NULL;
    $pass = NULL;

    //////////////////////////////////////////////////////////////////////////////////////////

    $pars = array();

    foreach ($_POST as $par => $val)
    {
        $pars[$par] = mysql_real_escape_string($val);
    }

    ksort($pars);

    $str = "";

    foreach ($pars as $pr => $vl)
    {
        if ($pr != 'key') $str .= $pr . '=' . $vl;
    }

    $str .= genkey;

    $sign = md5($str);

    if (strcmp($key, $sign)  !== 0)
    {
        retError(err_unknown, 'Unknown error');
        exit();
    }

我知道今天MD5不好,但这不是问题的重点。

PHP更新代码

    $key = NULL;
    if (isset($_POST['key'])) $key = $_POST['key'];

    if (!$key)
    {
        exit();
    }

    $login = NULL;

    $pass = NULL;

    //////////////////////////////////////////////////////////////////////////////////////////

    $pars = array();

    foreach ($_POST as $par => $val)
    {
        $pars[$par] = $val;
    }

    ksort($pars);

    $str = "";

    foreach ($pars as $pr => $vl)
    {
        if ($pr != 'key') $str .= $pr . '=' . $vl;
    }

    $str .= genkey;

    $sign = md5($str);

    if (strcmp($key, $sign)  !== 0)
    {
        exit();
    }

我发送到PHP脚本的字符串:

'Suggs
'H
Fgdfh'dg'hd'hgd

字符串,在PHP中:

\\'Suggs\n\\'H\nFgdfh\\'dg\\'hd\\'hgd

因此,换行是\n,撇号是\\'And并且当我快速哈希字符串时,没有\nand \\'这就是为什么哈希不同的原因。我可以简单地从字符串中删除新行和撇号,但这不是最好的解决方案,我想

史提芬

如果您magic_quotes_gpc启用了PHP配置(默认情况下在PHP <5.4中stripslashes启用),则需要调用$_POST或中的任何变量$_GET

参见http://php.net/manual/en/function.stripslashes.php

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

向PHP脚本发送请求时出现错误的符号

来自分类Dev

通过后XML向Quickblox发送授权请求时出现无效签名错误

来自分类Dev

向在 ngrok 上运行的应用程序发送发布请求时出现 502 错误

来自分类Dev

使用php发送GET请求时出现HTTP 400错误请求错误

来自分类Dev

发送Ajax请求时出现500错误

来自分类Dev

发送SOAP请求时出现错误

来自分类Dev

发送Ajax请求时出现500错误

来自分类Dev

在 PHP 中向 RESTlet 发送 GET 请求时,NetSuite“INVALID_LOGIN 错误”

来自分类Dev

从客户端向服务器发送JSON字符串时出现400错误的请求异常

来自分类Dev

向对等方发送 Hyperledger Fabric 的链码实例化请求时出现 OCI 运行时错误

来自分类Dev

从php发送短信时请求错误

来自分类Dev

从php发送短信时请求错误

来自分类Dev

发送带有curl的请求时出现无效的报头错误

来自分类Dev

发送带有curl的请求时出现无效的报头错误

来自分类Dev

从Android设备向PHP脚本发出请求时禁止访问

来自分类Dev

向Websocket发送PHP请求

来自分类Dev

为什么向烧瓶中的函数添加请求会导致空 POST 时出现“错误请求”?

来自分类Dev

当 React.js 应用程序向 Django 后端发送请求时出现 CORS 问题

来自分类Dev

向Twilio发送大量消息“错误请求”

来自分类Dev

Corona SDK(LUA)如何向php脚本发送请求以注册设备以获取通知?

来自分类Dev

向fluxpoint API发送请求时出错

来自分类Dev

使用 php 发布 GeoJSON 数据时出现错误请求

来自分类Dev

向主题发送消息时出现 KafkaProducerException

来自分类Dev

使用PHP脚本上传文件时出现无效文件错误

来自分类Dev

将主体管道到php脚本时出现Procmail错误

来自分类Dev

使用wadeshuler / yii2-sendgrid发送sendgrid电子邮件时出现错误的请求错误

来自分类Dev

向Mailjet发送Ajax请求时无法摆脱多源错误

来自分类Dev

向Stackoverflow API发送PHP Curl请求

来自分类Dev

防止向PHP发送垃圾XMLXML请求

Related 相关文章

  1. 1

    向PHP脚本发送请求时出现错误的符号

  2. 2

    通过后XML向Quickblox发送授权请求时出现无效签名错误

  3. 3

    向在 ngrok 上运行的应用程序发送发布请求时出现 502 错误

  4. 4

    使用php发送GET请求时出现HTTP 400错误请求错误

  5. 5

    发送Ajax请求时出现500错误

  6. 6

    发送SOAP请求时出现错误

  7. 7

    发送Ajax请求时出现500错误

  8. 8

    在 PHP 中向 RESTlet 发送 GET 请求时,NetSuite“INVALID_LOGIN 错误”

  9. 9

    从客户端向服务器发送JSON字符串时出现400错误的请求异常

  10. 10

    向对等方发送 Hyperledger Fabric 的链码实例化请求时出现 OCI 运行时错误

  11. 11

    从php发送短信时请求错误

  12. 12

    从php发送短信时请求错误

  13. 13

    发送带有curl的请求时出现无效的报头错误

  14. 14

    发送带有curl的请求时出现无效的报头错误

  15. 15

    从Android设备向PHP脚本发出请求时禁止访问

  16. 16

    向Websocket发送PHP请求

  17. 17

    为什么向烧瓶中的函数添加请求会导致空 POST 时出现“错误请求”?

  18. 18

    当 React.js 应用程序向 Django 后端发送请求时出现 CORS 问题

  19. 19

    向Twilio发送大量消息“错误请求”

  20. 20

    Corona SDK(LUA)如何向php脚本发送请求以注册设备以获取通知?

  21. 21

    向fluxpoint API发送请求时出错

  22. 22

    使用 php 发布 GeoJSON 数据时出现错误请求

  23. 23

    向主题发送消息时出现 KafkaProducerException

  24. 24

    使用PHP脚本上传文件时出现无效文件错误

  25. 25

    将主体管道到php脚本时出现Procmail错误

  26. 26

    使用wadeshuler / yii2-sendgrid发送sendgrid电子邮件时出现错误的请求错误

  27. 27

    向Mailjet发送Ajax请求时无法摆脱多源错误

  28. 28

    向Stackoverflow API发送PHP Curl请求

  29. 29

    防止向PHP发送垃圾XMLXML请求

热门标签

归档