mirror of
https://github.com/CyC2018/Interview-Notebook.git
synced 2026-10-31 02:53:42 +00:00
Update 攻击技术.md
预处理语句示例的字段名与上文一致,补充用反斜线转义单引号,更新 PHP Magic Quotes 的说明。
This commit is contained in:
+4
-4
@@ -188,9 +188,9 @@ strSQL = "SELECT * FROM users;"
|
||||
Java 中的 PreparedStatement 是预先编译的 SQL 语句,可以传入适当参数并且多次执行。SQL 语句的结构在预编译时已经确定,传入的参数只会被当作数据,因此可以防止 SQL 注入的发生。
|
||||
|
||||
```java
|
||||
PreparedStatement stmt = connection.prepareStatement("SELECT * FROM users WHERE userid=? AND password=?");
|
||||
stmt.setString(1, userid);
|
||||
stmt.setString(2, password);
|
||||
PreparedStatement stmt = connection.prepareStatement("SELECT * FROM users WHERE name = ? AND pw = ?");
|
||||
stmt.setString(1, name);
|
||||
stmt.setString(2, pw);
|
||||
ResultSet rs = stmt.executeQuery();
|
||||
```
|
||||
|
||||
@@ -204,7 +204,7 @@ Query SELECT * FROM users WHERE name = '1'' OR ''1''=''1' AND pw = '1'' OR ''
|
||||
|
||||
#### 2. 单引号转换
|
||||
|
||||
将传入的参数中的单引号转换为连续两个单引号。PHP 的 Magic Quotes 曾经自动完成这个功能,但是因为不可靠已经被移除,应该使用数据库驱动提供的转义函数,并且只在无法使用参数化查询时使用。
|
||||
将传入的参数中的单引号转换为连续两个单引号,或者在单引号前加反斜线(MySQL 默认两种都支持)。PHP 的 Magic Quotes 曾经自动给单引号等字符加反斜线,但是因为不可靠,已经在 PHP 5.4 中移除,应该使用数据库驱动提供的转义函数,并且只在无法使用参数化查询时使用。
|
||||
|
||||
#### 3. 最小权限
|
||||
|
||||
|
||||
Reference in New Issue
Block a user