标签:php security code-injection
我以前发过这个帖子,但从来没有这方面所以请看一下:
我被告知做sql注射的一种方法是使用1 = 1,其中有人可以看到所有不属于他们的条目.
但是,让我说我构造我的查询,以便它也选择当前用户的user_id,这将工作:
$userid = Current users stored id in database;
$postid = mysql_real_escape_string($_GET['id']);
现在让我们假设我输入:domain.com/page.php?id =”OR’1’=’1′
Select article_name from table where user_id=$userid and post_id=$postid
由于我添加了User_id屏障,查询是否仍会返回所有内容或不会返回?
解决方法:
mysql_real_escape_string()仅用于清理字符串.它不会保护SQL注入没有用引号括起来的整数,所以你的观察是正确的:尽管mysql_real_escape_string(),上面显示的内容确实不安全.
您需要将值包装在引号中:
Select article_name from table where user_id='$userid' and post_id='$postid'
或者在运行查询之前确保$userid和$postid是整数.
标签:php,security,code-injection 来源: https://codeday.me/bug/20190723/1514489.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。