Add 0.9.4.md syntax highlighting
This commit is contained in:
@@ -38,11 +38,13 @@ Web应用未对用户提交请求的数据做充分的检查过滤,允许用
|
||||
|
||||
- 使用HTTP头指定类型
|
||||
|
||||
```Go
|
||||
|
||||
`w.Header().Set("Content-Type","text/javascript")`
|
||||
|
||||
这样就可以让浏览器解析javascript代码,而不会是html输出。
|
||||
|
||||
|
||||
```
|
||||
## 总结
|
||||
XSS漏洞是相当有危害的,在开发Web应用的时候,一定要记住过滤数据,特别是在输出到客户端之前,这是现在行之有效的防止XSS的手段。
|
||||
|
||||
|
||||
15
zh/09.4.md
15
zh/09.4.md
@@ -9,6 +9,7 @@ SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常
|
||||
下面将通过一些真实的例子来详细讲解SQL注入的方式。
|
||||
|
||||
考虑以下简单的登录表单:
|
||||
```html
|
||||
|
||||
<form action="/login" method="POST">
|
||||
<p>Username: <input type="text" name="username" /></p>
|
||||
@@ -16,31 +17,39 @@ SQL注入攻击(SQL Injection),简称注入攻击,是Web开发中最常
|
||||
<p><input type="submit" value="登陆" /></p>
|
||||
</form>
|
||||
|
||||
```
|
||||
我们的处理里面的SQL可能是这样的:
|
||||
```Go
|
||||
|
||||
username:=r.Form.Get("username")
|
||||
password:=r.Form.Get("password")
|
||||
sql:="SELECT * FROM user WHERE username='"+username+"' AND password='"+password+"'"
|
||||
|
||||
```
|
||||
如果用户的输入的用户名如下,密码任意
|
||||
```Go
|
||||
|
||||
myuser' or 'foo' = 'foo' --
|
||||
|
||||
```
|
||||
那么我们的SQL变成了如下所示:
|
||||
```Go
|
||||
|
||||
SELECT * FROM user WHERE username='myuser' or 'foo'=='foo' --'' AND password='xxx'
|
||||
|
||||
```
|
||||
在SQL里面`--`是注释标记,所以查询语句会在此中断。这就让攻击者在不知道任何合法用户名和密码的情况下成功登录了。
|
||||
|
||||
对于MSSQL还有更加危险的一种SQL注入,就是控制系统,下面这个可怕的例子将演示如何在某些版本的MSSQL数据库上执行系统命令。
|
||||
```Go
|
||||
|
||||
sql:="SELECT * FROM products WHERE name LIKE '%"+prod+"%'"
|
||||
Db.Exec(sql)
|
||||
|
||||
```
|
||||
如果攻击提交`a%' exec master..xp_cmdshell 'net user test testpass /ADD' --`作为变量 prod的值,那么sql将会变成
|
||||
```Go
|
||||
|
||||
sql:="SELECT * FROM products WHERE name LIKE '%a%' exec master..xp_cmdshell 'net user test testpass /ADD'--%'"
|
||||
|
||||
```
|
||||
MSSQL服务器会执行这条SQL语句,包括它后面那个用于向系统添加新用户的命令。如果这个程序是以sa运行而 MSSQLSERVER服务又有足够的权限的话,攻击者就可以获得一个系统帐号来访问主机了。
|
||||
|
||||
>虽然以上的例子是针对某一特定的数据库系统的,但是这并不代表不能对其它数据库系统实施类似的攻击。针对这种安全漏洞,只要使用不同方法,各种数据库都有可能遭殃。
|
||||
|
||||
Reference in New Issue
Block a user