承接上次所提,透过万用字串' or 1=1--,可不须验证,盗用其他人帐号,甚至可以进一步读取密码纪录档案等,那要怎麽防护呢?
防护方法:
(1)可以最小化使用者权限设定(限制使用者,只授予能取得的权限)
(2)过滤使用者输入
%% 切记不要使用黑名单,会永远禁止不完(如:double encoding)
(3)double encoding(可以轻易躲开黑名单限制)
将%252E%252E%252F%252E%252E%252F转换一次,再转换一次变成特殊字串../../
发生位置
最常发生 SELECT 查询中的 WHERE 条件
可概分为「字串型」及「数字型」,分述如后:
WHERE 条件中有单/双引号(表示字串)进行查询
Demo:用'让第一个单引号闭合,再用or让'1'='1'(永远成立),让WHERE 条件失效,显示SELECT * FROM user_data结果
起手式
(1)观察输入点, GET、POST、Cookie 等参数
(2)会透过一些特殊符号来确认後端的逻辑
空
'
"
`
')
")
`)
'))
"))
`))
(3)当看到 500 error 有机会有弱点
WHERE 条件中无单引号(表示数字或布林)进行查询
* true
* 1
* 1>0
* 2-1
* 0+1
* 1*1
* 1%2
* 1 & 1
* 1&1
* 1 && 2
* 1&&2
(3)当看到
<<: [ C# 开发随笔 ] 在 Async/Await 情况使用 ReaderWriterLockSlim 出现无法解锁的状况
AnimatedWidget AnimatedWidget是一个有状态的StatefulWidget...
什麽是 head? 我们在 commit 版本时,其实是将档案 commit 到一条 branch(...
1189. Maximum Number of Balloons https://leetcode....
前文提到页是Innodb的基本存取单位,一般为16kb,Innodb为了实现功能其实设计了许多不同类...
本文介绍 Projucer 建立的 GUI Application 框架基本架构。框架(Framew...