在sql中防止sql注入_如何防止PHP应用程序中SQL注入?

在sql中防止sql注入

I have an application and I have complex requests tot the server. There are a lot of database operations. Managing them can become very hard some times. In this situation how can I prevent sql injection attacks to my application.

我有一个应用程序,并且服务器有复杂的请求。 数据库操作很多。 管理它们有时会变得非常困难。 在这种情况下,如何防止对应用程序SQL注入攻击。

使用准备好的语句 (Use Prepared Statements)

Prepared statements are the way to bind client-side provided values with database queries. Prepared Data Object (PDO) acts middle proxy and prevents SQL injections. PDO is supported all database drivers so there is no problem about database driver.

准备语句是将客户端提供的值与数据库查询绑定的方式。 准备数据对象(PDO)充当中间代理,并防止SQL注入。 所有数据库驱动程序都支持PDO,因此数据库驱动程序没有问题。

  1. $stmt = $pdo->prepare(‘SELECT * FROM employees WHERE name = :name’);
  2. $stmt->execute(array(‘name’ => $name));
  3. foreach ($stmt as $row) {
  4. // do something with $row
  5. }

正确设置数据库连接 (Correctly Setup Database Connection)

Using default settings generally provides problems or security issues. So creating a database connection by explicitly specifying parameters is the best way sql injection type attack.

使用默认设置通常会带来问题或安全问题。 因此,通过显式指定参数来创建数据库连接是sql注入类型攻击的*佳方法。

  1. $dbConnection = new PDO(‘mysql:dbname=dbtest;host=127.0.0.1;charset=utf8’, ‘user’, ‘pass’);
  2. $dbConnection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
  3. $dbConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

使用WAF (Use WAF)

After deployment of php web application it will be reached from internet. Most of the attackers resides internet so preventing them or at least detecting them will be valuable. Web Application Firewall is like a Network Firewall but works in layer 7 in OSI reference model. Simple WAF will inspect http/s traffic and try to find block attack requests.

部署php Web应用程序后,可以从Internet访问它。 大多数攻击者都驻留在Internet上,因此阻止或至少检测到它们将很有价值。 Web应用程序防火墙类似于网络防火墙,但在OSI参考模型的第7层中起作用。 简单的WAF将检查http / s流量并尝试查找阻止攻击请求。

进行渗透测试以进行应用 (Make Penetration Test For Application)

Penetration tests are simulation of the attacks and attackers. White hat hackers will give this service to attack the php application like a Black Hat Hacker and give some hints about php application vulnerabilities.

渗透测试是对攻击者和攻击者的模拟。 白帽黑客将像Black Hat Hacker一样提供此服务来攻击php应用程序,并提供有关php应用程序漏洞的一些提示。

进行静态代码分析 (Make Static Code Analyze)

Code Analyze is the act of using Code Analyzing tools to find security related code parts in the application code.  Static Code Analyze gives a lot of issues but some of them are false positive so the Static Code Analyze report should be filtered by a security professional to make thing better and clearer.

代码分析是使用代码分析工具在应用程序代码中查找与安全相关的代码部分的行为。 静态代码分析提出了很多问题,但是其中一些是误报问题,因此应由安全专业人员过滤“静态代码分析”报告,以使事情变得更好,更清晰。

LEARN MORE  How To Exclude Hosts From Nmap Scan?
了解更多如何从Nmap扫描中排除主机?

如何防止PHP应用程序中SQL注入? 信息移植 (How To Prevent SQL Injection in Php Applications? Infografic)

How To Prevent SQL Injection in Php Applications? Infografic
How To Prevent SQL Injection in Php Applications? Infografic

求解一个被病毒加密的 SQL 文件

服务器中毒后,其他都没事,就有个 mysql 的备份文件比较重要,不知道 V2 上有没高手可以帮忙解下。。。 文件地址: http://pan.baidu.com/s/1i3VlJc5

文件 MySQL SQL 求解8 条回复 • 2017-04-03 11:15:33 +08:00
66CCFF 1
66CCFF 2016-03-18 21:20:28 +08:00 ❤️ 1
勒索病毒?
真重要的话交钱吧。
yangqi 2
yangqi 2016-03-18 21:31:12 +08:00 ❤️ 1
xtbl 文件,就是勒索病毒,没办法解密的,只能从别的备份文件还原,如果没有那就没办法了。唯一的办法就是给钱吧好像
ge2009 3
ge2009 2016-03-18 21:43:32 +08:00
@66CCFF
@yangqi 嗯,是的,那看来是真的没有办法咯,还是原则问题吧,给钱是坚决不给的,只是自己有些记录得花点时间重新恢复了,当给自己的教训了,感谢二位!
UnisandK 4
UnisandK 2016-03-18 22:03:26 +08:00
这种勒索软件真的没法破,只能乖乖交钱,时间超了他把密匙一销毁就是他自己都别想把你的数据找回来
以后多长个心眼吧,重要数据用主从数据库远程备份
pynix 5
pynix 2016-03-18 22:08:49 +08:00 via Android
悲剧
cchange 6
cchange 2016-04-10 12:37:27 +08:00 via iPhone
悲剧 确实得注意安全啊
ru1404 7
ru1404 2017-03-30 19:13:23 +08:00 ❤️ 1
已解码不谢 http://pan.baidu.com/s/1nv0mLeD
ge2009 8
ge2009 2017-04-03 11:15:33 +08:00
@ru1404 牛 B 啊,这都能解,服!!!

如何用SQL语句创建数据库

如何用SQL语句创建数据库

说明:在项目的开发当中数据库需要部署在客户的实际环境中试运行,但我们在部署的时候需要考虑的是,后台的数据库如何移植到客户的计算机中,考虑到各种版本的兼容性,*好的办法就是编写比较通用的SQL语句,包括建库,建表,添加约束等,*后复制到客户的计算机中运行;

创建数据库的语法:

*步:先要判断当前数据库系统中是否存在你要新建的数据库,如果是就要删除(MASTER系统数据库中的sysdatabases表中存放了所有数据库清单)

if exists(select * from sysdatabases where name=’databasesName’)

drop databases databasesName

第二步创建新库

create databases databasesName

ON

name =’databases_data’,–表示数据库的逻辑名

filename =’路径/databases_data.mdf’,–表示数据库的物理文件名

size =XXmb,–表示数据库的初始大小

maxsize=xxmb,–表示数据库的*大大小

filegrowth=xx–表示文件的增长速度(可以是百分数也可以是好多mb

log on

(

name =’databases_log,–表示数据库的逻辑名

filename =’路径/databases_log.ldf,–表示数据库的物理文件名

size =XXmb,–表示数据库的初始大小

maxsize=xxmb,–表示数据库的*大大小

filegrowth=xx–表示文件的增长速度(可以是百分数也可以是好多mb

)

实例

use master

go

if exists(select * from sysdatabases where name=’student’)

drop database student

go

create database student

on

(

name=’student_data’,

filename=’student_data.mdf’,

size=10mb,

maxsize=100mb,

filegrowth=1mb

)

log on

(

name=’student_log,

filename=’student_log.ldf’,

size=10mb,

maxsize=100mb,

filegrowth=1mb

)

SQL 列转行的实现

–列转行,逗号拼接指定列的值

SQL Server中写法:
SELECT STUFF(( SELECT  ‘,’ + Field1 from TableA FOR XML PATH(”)), 1, 1, ”)

Oracle中写法:

方法一:wmsys.wm_concat
select wmsys.wm_concat(Field1) from TableA

方法二:LISTAGG()

2.1、LISTAGG(XXX,XXX) WITHIN GROUP( ORDER BY XXX)

用法就像聚合函数一样,通过Group by语句,把每个Group的一个字段,拼接起来

 1 with temp as(
 2   select 'China' nation,'Beijing' city from dual union
 3   select 'China' nation,'Shanghai' city from dual union
 4   select 'China' nation,'Guangzhou' city from dual union
 5   select 'USA' nation,'New York' city from dual union
 6   select 'USA' nation,'Bostom' city from dual
 7 )
 8 select nation,listagg(city,',') within group(order by city)
 9 from temp
10 group by nation;

2.2、over(partition by XXX)

在不使用Group by语句时候,使用LISTAGG函数(当作SUM()函数来使用)

1 with temp as(
2   select 'China' nation,'Beijing' city from dual union
3   select 'China' nation,'Shanghai' city from dual union
4   select 'China' nation,'Guangzhou' city from dual union
5   select 'USA' nation,'New York' city from dual union
6   select 'USA' nation,'Bostom' city from dual
7 )
8 select nation,city,listagg(city,',') within group(order by city) over(partition by nation) rank
9 from temp;