Add 0.9.4.md syntax highlighting

This commit is contained in:
vCaesar
2016-12-18 16:23:08 +08:00
parent 6fde19e4b5
commit 47151f9f4c
2 changed files with 15 additions and 4 deletions

View File

@@ -38,11 +38,13 @@ Web应用未对用户提交请求的数据做充分的检查过滤允许用
- 使用HTTP头指定类型
```Go
`w.Header().Set("Content-Type","text/javascript")`
这样就可以让浏览器解析javascript代码而不会是html输出
```
## 总结
XSS漏洞是相当有危害的在开发Web应用的时候一定要记住过滤数据特别是在输出到客户端之前这是现在行之有效的防止XSS的手段。

View File

@@ -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服务又有足够的权限的话攻击者就可以获得一个系统帐号来访问主机了。
>虽然以上的例子是针对某一特定的数据库系统的,但是这并不代表不能对其它数据库系统实施类似的攻击。针对这种安全漏洞,只要使用不同方法,各种数据库都有可能遭殃。