小编dan*_*car的帖子

Php&Sql Injection - UTF8 POC

有很多关于addslashes和mysql_real_escape函数如何防止注入安全的讨论.事实上,即使像Wordpress这样的大型框架或CMS正在使用这些功能,他们到目前为止还做了一项神工作.

我知道在使用GBK字符集时有一些特殊情况,或者可以使用utf8_decode来注入一些sql代码,或者1' OR 1 --在有简单涉及的地方时可以使用这样的一些简单示例.

然而,经过一些研究后,如果charset是UTF-8并且让我们承认,使用addslashes或mysql_real_escape这样的简单查询就很难注入,这是最常见的情况.

所以,鉴于这个新手脚本,请提供一个sql注入POC(记住UTF-8 charset)

$mysql['username'] = addslashes($_POST['username']);
$mysql['password'] = addslashes($_POST['password']);

$sql = "SELECT *
FROM users
WHERE username = '{$mysql['username']}'
AND password = '{$mysql['password']}'";
Run Code Online (Sandbox Code Playgroud)

更新 - 我只需要一个简单的例子,而不是完整的流程披露.即使谷歌的链接可能会工作.

php sql code-injection

15
推荐指数
1
解决办法
3566
查看次数

如何处理不同类型的PHP开关?

如何使交换机尊重数据类型(是否有更好的解决方法,如果/ else)?

  • $ value = false; //应该回显假
  • $ value = null; //应该回显null

    
    
    switch ($value) {
        case '0' :
            echo 'zero';
            break;
        case '' :
            echo 'empty';
            break;
        case null :
            echo 'null';
            break;
        case false :
            echo 'false';
            break;
        default :
            echo 'default';
            break;
    }
    
    

    结论

  • 开关/外壳确实松动比较.
  • 解决方案:使用ifs或if/else切换

  • php

    15
    推荐指数
    2
    解决办法
    8697
    查看次数

    在PHP中解析无效HTML的最佳方法

    有没有更好的方法来解析无效的HTML然后应用Tidy?

    旁注:有些情况下你不能提供Tidy.我还不建议使用Regexp来解析html.

    html php parsing

    14
    推荐指数
    1
    解决办法
    5943
    查看次数

    "Where IN"是否在标准SQL中定义了多个列?

    我正在处理这样的查询:

    SELECT * FROM requests where (id,langid) IN (SELECT nid,langid FROM node)
    
    Run Code Online (Sandbox Code Playgroud)

    我的问题是

  • 这在mysql和postgresql中有效吗?
  • 这是标准SQL支持的东西吗?

    我知道这不是最好的解决方案,JOIN会起作用,但我对此并不感兴趣.

  • mysql sql postgresql

    13
    推荐指数
    3
    解决办法
    5670
    查看次数

    1个月在PHP中代表多少天?

    我看到php有月加法和减法有奇怪的问题.

    我的问题是:

  • 1个月有相当于几天?
  • 如果是,这是所有编程语言的通用标准吗?

    几个例子:

    echo date('Y-m-d',strtotime('2011-03-31 -1 months')); //2011-03-03
    echo date('Y-m-d',strtotime('2011-03-30 -1 months')); //2011-03-02
    echo date('Y-m-d',strtotime('2011-03-29 -1 months')); //2011-03-01
    echo date('Y-m-d',strtotime('2011-03-28 -1 months')); //2011-02-28
    
    Run Code Online (Sandbox Code Playgroud)
  • php

    12
    推荐指数
    1
    解决办法
    1790
    查看次数

    如何用js和php创建跟踪脚本?

    我想创建一个简单的跟踪脚本来提供给我的客户.与GA类似但非常基本的东西.

    要求是

  • 为客户提供像谷歌分析一样简单的js脚本
  • 使主网站上的第3方网站加载js文件中的大部分逻辑
  • 在PHP中收集信息并存储它

    我无法想象的是这样做的方法是什么?我看到谷歌正在加载一个gif文件,存储信息并解析日志.如果我做类似的事情将数据发送到php文件,Ajax跨站点策略将阻止我,从我记忆中.

    那么干净的方法是什么呢?(我不需要代码只是背后的逻辑)

  • javascript php

    12
    推荐指数
    1
    解决办法
    1万
    查看次数

    获取表和列"拥有"序列

    我可以运行以下行:

    ALTER SEQUENCE seqName OWNED BY table.id;
    
    Run Code Online (Sandbox Code Playgroud)

    如何OWNED BY为序列设置"所有者" (在这种情况下:) table.id

    postgresql database-design

    12
    推荐指数
    2
    解决办法
    8649
    查看次数

    Array_unique SORT_REGULAR标志

    $array = array(1, '1a', '1');
    var_export(array_unique($array, SORT_REGULAR));
    
    Run Code Online (Sandbox Code Playgroud)
    • 结果:数组(0 => 1,2 =>'1')
    • 在PHP手册中:SORT_REGULAR - 正常比较项目(不要更改类型).

    这背后的逻辑是什么?为什么或如何排除'1a'?

    php

    12
    推荐指数
    1
    解决办法
    7835
    查看次数

    将Jaxb Pojos序列化为多个或不同的名称空间

    请考虑以下代码:

    Main.java
    ====
    package com.sample;
    
    import com.sample.entity.Customer;
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Marshaller;
    
    public class Main {    
    
        public static void main(String[] args) throws JAXBException {
           JAXBContext jc = JAXBContext.newInstance(Customer.class);
    
           Customer customer = new Customer();
           customer.setId(123);
    
           Marshaller m = jc.createMarshaller();
           m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
           m.marshal(customer, System.out);    
        }
    }
    
    
    Customer.java
    ====
    package com.sample.entity;
    
    import javax.xml.bind.annotation.XmlAttribute;
    import javax.xml.bind.annotation.XmlRootElement;
    
    @XmlRootElement
    public class Customer {
        private long id;
    
        public long getId() {
            return id;
        }
    
        public void setId(long id) {
            this.id = id;
        }
    }
    
    package-info.java
    ==== …
    Run Code Online (Sandbox Code Playgroud)

    java xml xsd jaxb marshalling

    12
    推荐指数
    1
    解决办法
    1016
    查看次数

    11
    推荐指数
    1
    解决办法
    3993
    查看次数