程序员常见的WEB安全漏洞共25页文档
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
行,最暴力的防范就是禁用JS脚本
3.XSS – 实例
• 彩票业务AJAX回调导致的XSS漏洞 caipiao.taobao/lottery/order/getDcSpInfoAj ax.htm?callback=%3Cscript%3Ealert%28 %27xss%27%29%3C/script%3E
2.SQL注入 – 防范
• 避免字符串拼SQL,完全使用参数化查询 • 将单引号字符取代为连续2个单引号字符 • 利用框架的防SQL注入功能
2.SQL注入 – iBatis 1
• 尽量使用#,避免使用$
根据彩种ID和彩期名得到一个彩期, int type=123; String title=“123”。
2.SQL注入 – iBatis 2
• 尽量使用#,避免使用$ • 若不能避免$,则带上元数据标识
SQL中需要用户提交的ASC、DESC等SQL关键字
select * from user order by gmt_create $ordertype:SQLKEYWORD$
SQL中需要用户提交的字段名、表名等元数据
</iterate> </select>
3.XSS – 简介
• Cross-Site Scripting,跨站脚本攻击 • 定义:攻击者在页面里插入恶意脚本,当用户浏览该页时,
嵌入其中的恶意代码被执行,从而达到攻击者的特殊目的 • 实质:用户提交的HTML代码未经过滤和转义直接回显 • 特点:
– 攻击授信和未授信用户,不直接攻击服务器 – 很常见,例如贴图、 AJAX回调、富文本(如评论留言) – 恶意脚本可能位于跨站服务器,但必须用户浏览器执
做SQL来执行 • 特点:
– 很常见,使用数据库的应用多如牛毛 – 多见于小PHP站,采用字符串拼SQL的应用 – 直接攻击服务器
SQL注入攻击也俗称黑客的填空游戏
2.SQL注入 – 危害
• 字符串填空
– 绕过登录鉴权 select * from user where name=‘’ or ‘1’=‘1’ and pw=‘’ Biblioteka Baidur ‘1’=‘1’
• <span><iframe src=hacker></iframe></span> • <input type="hidden" Name="OrinSearchText" value="" ><iframe
src=hacker></iframe>< "" id="OrinSearchText_rfs" $disabledFlag /> • <script>var fromgcn = '';hackerFunction(document.cookie);''; </script>
<select id=“findOrder” parameterClass=“java.lang.Array” resultClass=“java.lang.Object”> select * from order where order_status in
<iterate open=“(“ close=“)” conjunction=“,”> #orderStatus[]#
0.大纲
1.引子
不安全的淘宝,一直被紧盯,经常被攻击 • 影响力 – 宕机、篡改页面 • 交易 – 盗取银行账号、钓鱼攻击 • 用户 – 登录密码以及cookie/refer/ip隐私
2.SQL注入 – 简介
• 定义:攻击者提交恶意SQL并得到执行 • 本质:由于输入检验不充分,导致非法数据被当
value="$!searchBarView.LastKeyword" id="OrinSearchText_rfs" $disabledFlag /> • <script>var fromgcn = '$!rundata.Parameters.getString('fromgcn')';</script>
结果:
select * from item where type=123 and title=‘123’
$不过滤直接文本替换:
select * from item where type=$type$ and title=‘$title$’
#根据变量类型来替换:
select * from item where type=#type# and title=#title#
• 执行任意SQL,利用注释,select * from item whre item=‘’;your sql--’ 或整型字段,select * from item where item_id=0;your sql;
– 篡改系统账号 alter login sa with password=‘123456’ – 用户隐私外泄 select * from user – 系统细节外泄 select * from sys.tables – 控制操作系统 xp_cmdshell “net stop iisadmin” – 损害硬盘宕机 xp_cmdshell “FORMAT C:” – 埋入XSS漏洞 insert into comment(cnt) values(‘<script>…</script>’)
3.XSS – 危害
• 挂蠕虫、木马、病毒 • 盗取用户的cookie/referer/ip等信息 • 制作钓鱼网站 • 用户被提交恶意数据、被执行恶意操作 • 帮助CSRF,绕过CSRF的token验证
3.XSS – 代码分析
• <span>$!productName</span> • <input type="hidden" Name="OrinSearchText"
select * from user order by $orderByColumn:METADATA$
2.SQL注入 – iBatis 3
• 尽量使用#,避免使用$ • 若不能避免$,则带上元数据标识 • 用迭代替换IN关键字中的$
int orderStatus = {0,1,2,3} List orders = sqlMap.queryForList(“OrderDAO.findLlOrder", orderStatus );
3.XSS – 实例
• 彩票业务AJAX回调导致的XSS漏洞 caipiao.taobao/lottery/order/getDcSpInfoAj ax.htm?callback=%3Cscript%3Ealert%28 %27xss%27%29%3C/script%3E
2.SQL注入 – 防范
• 避免字符串拼SQL,完全使用参数化查询 • 将单引号字符取代为连续2个单引号字符 • 利用框架的防SQL注入功能
2.SQL注入 – iBatis 1
• 尽量使用#,避免使用$
根据彩种ID和彩期名得到一个彩期, int type=123; String title=“123”。
2.SQL注入 – iBatis 2
• 尽量使用#,避免使用$ • 若不能避免$,则带上元数据标识
SQL中需要用户提交的ASC、DESC等SQL关键字
select * from user order by gmt_create $ordertype:SQLKEYWORD$
SQL中需要用户提交的字段名、表名等元数据
</iterate> </select>
3.XSS – 简介
• Cross-Site Scripting,跨站脚本攻击 • 定义:攻击者在页面里插入恶意脚本,当用户浏览该页时,
嵌入其中的恶意代码被执行,从而达到攻击者的特殊目的 • 实质:用户提交的HTML代码未经过滤和转义直接回显 • 特点:
– 攻击授信和未授信用户,不直接攻击服务器 – 很常见,例如贴图、 AJAX回调、富文本(如评论留言) – 恶意脚本可能位于跨站服务器,但必须用户浏览器执
做SQL来执行 • 特点:
– 很常见,使用数据库的应用多如牛毛 – 多见于小PHP站,采用字符串拼SQL的应用 – 直接攻击服务器
SQL注入攻击也俗称黑客的填空游戏
2.SQL注入 – 危害
• 字符串填空
– 绕过登录鉴权 select * from user where name=‘’ or ‘1’=‘1’ and pw=‘’ Biblioteka Baidur ‘1’=‘1’
• <span><iframe src=hacker></iframe></span> • <input type="hidden" Name="OrinSearchText" value="" ><iframe
src=hacker></iframe>< "" id="OrinSearchText_rfs" $disabledFlag /> • <script>var fromgcn = '';hackerFunction(document.cookie);''; </script>
<select id=“findOrder” parameterClass=“java.lang.Array” resultClass=“java.lang.Object”> select * from order where order_status in
<iterate open=“(“ close=“)” conjunction=“,”> #orderStatus[]#
0.大纲
1.引子
不安全的淘宝,一直被紧盯,经常被攻击 • 影响力 – 宕机、篡改页面 • 交易 – 盗取银行账号、钓鱼攻击 • 用户 – 登录密码以及cookie/refer/ip隐私
2.SQL注入 – 简介
• 定义:攻击者提交恶意SQL并得到执行 • 本质:由于输入检验不充分,导致非法数据被当
value="$!searchBarView.LastKeyword" id="OrinSearchText_rfs" $disabledFlag /> • <script>var fromgcn = '$!rundata.Parameters.getString('fromgcn')';</script>
结果:
select * from item where type=123 and title=‘123’
$不过滤直接文本替换:
select * from item where type=$type$ and title=‘$title$’
#根据变量类型来替换:
select * from item where type=#type# and title=#title#
• 执行任意SQL,利用注释,select * from item whre item=‘’;your sql--’ 或整型字段,select * from item where item_id=0;your sql;
– 篡改系统账号 alter login sa with password=‘123456’ – 用户隐私外泄 select * from user – 系统细节外泄 select * from sys.tables – 控制操作系统 xp_cmdshell “net stop iisadmin” – 损害硬盘宕机 xp_cmdshell “FORMAT C:” – 埋入XSS漏洞 insert into comment(cnt) values(‘<script>…</script>’)
3.XSS – 危害
• 挂蠕虫、木马、病毒 • 盗取用户的cookie/referer/ip等信息 • 制作钓鱼网站 • 用户被提交恶意数据、被执行恶意操作 • 帮助CSRF,绕过CSRF的token验证
3.XSS – 代码分析
• <span>$!productName</span> • <input type="hidden" Name="OrinSearchText"
select * from user order by $orderByColumn:METADATA$
2.SQL注入 – iBatis 3
• 尽量使用#,避免使用$ • 若不能避免$,则带上元数据标识 • 用迭代替换IN关键字中的$
int orderStatus = {0,1,2,3} List orders = sqlMap.queryForList(“OrderDAO.findLlOrder", orderStatus );