dongsheng1698 2015-11-08 04:44
浏览 26
已采纳

在PHP表单中防止SQL注入[关闭]

I keep getting told by people my code (https://github.com/LaughingQuoll/Administrator-Control-Panel) is vunerable to SQL injection. That all great but I dont understand how to fix it. I think I fixed in in the index.php file but I dont know. Could someone please take a look over it and suggest how I can fix it or if I did fix it with my recent commit. Thanks.

  • 写回答

1条回答 默认 最新

  • dongyi1921 2015-11-08 04:52
    关注

    TL;DR;

    Use prepared statements and read How can I prevent SQL injection in PHP? carefully

    While this is not a code review site, but a question and answer site, I would like to point out that as long as you are doing things like this....

    $result = mysqli_query("SELECT * FROM members WHERE username='" . $uername . "' and password = '". $password."'");
    

    in your code where you are concatenating values into your code without first passing them through the proper escape functions, you are definitely vulnerable to SQL injection. You're also vulnerable to human error (forgetting to escape or escaping incorrectly).

    Even though here you do pass the value into mysqli_real_escape_string you're doing it before the connection to the SQL server is established, and thus before the charset is negotiated between the client and server, which means you are still be vulnerable to SQLi.

    **** Big fat warning in the manual for this ****

    Caution

    Security: the default character set

    The character set must be set either at the server level, or with the API function mysqli_set_charset() for it to affect mysqli_real_escape_string(). See the concepts section on character sets for more information.

    http://php.net/mysqli-real-escape-string

    Not going to bother doing a full audit on your code here, but I am going to point you to How can I prevent SQL injection in PHP? and also https://stackoverflow.com/a/12202218/1878262 for more details on why character set negotiation is still important to preventing SQLi.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?