使用MySQL重新SQL注入攻击,什么是基线要求?

在当前使用MySQL的项目中。 研究mysqli函数,发现它们很难使用。 在我看来,任何使用该库的程序员都应该获得荣誉勋章。

三个问题:

  • mysqli不处理NULL或函数,如CURRENT_DATE
  • 使用随机WHERE子句的查询使用参数化SQL语句是不可能的(所以如何防止SQL注入攻击?)
  • 在我看来,在复杂情况下使用sqli工作太多了(请参阅链接)
  • PDO不能解决任何这些问题。 问题是SQL注入:如果不使用参数化查询,PDO如何帮助SQL注入?

    记住这一点,在PHP中为MySQL编写了一个简单而有效的工作。 请参阅https://github.com/bangkok-maco/MySQL-sql-injection-prevention

    (有人帮忙把图书馆放在这里,但用链接替换它,但请使用网站上的REAME进行介绍。)

    问题是,我知道基本原则是否解决了需要解决的问题。

    原则如下:

  • 每个SELECT由没有DML(INSERT,UPDATE,DELETE)权限的用户执行
  • 一个DML语句只返回受影响的行数
  • 除非通过MySQL函数和过程,否则敏感数据将无法访问
  • 影子用户和其他人都可以执行这些功能,并且没有其他权利
  • DML语句被参数化; SELECT语句从未参数化
  • 从逻辑上来说,这足够吗?

    SQL注入可能会导致非法的SELECT(可以简单地被吃掉),但是SELECT可以不写入数据。 DML是参数化的,所以数据是标量的。 敏感数据(例如密码)无法通过普通SQL或普通用户访问。


    这个代码像筛子一样泄漏。
    你在一个没有mysql_real_escape_string()函数中调用mysql_query
    您在另一个功能中使用PDO。
    这是一团糟,没有任何意义。 如果你知道如何使用PDO,只需使用它。
    那么你会安全。

    如果你想使用mysql_query ,你必须使用mysql_real_escape_string()


    这个问题完全错了。 在这里转载了这个问题。

    链接地址: http://www.djcxy.com/p/93459.html

    上一篇: re SQL Injection Attack using MySQL, what are baseline requirements?

    下一篇: How does SQL query parameterisation work?