Vi um erro básico comum no código de muitos posts do fórum, que é o tipo de campo errado. O programa e o banco de dados estão intimamente conectados. Os campos do banco de dados do tipo texto ou de hora usam aspas simples 1. Erros comuns cometidos por novatos.
Vi um erro básico comum no código de muitos posts do fórum, que é o tipo de campo errado.
O programa e o banco de dados estão intimamente conectados. Os campos do banco de dados do tipo texto ou hora usam aspas simples.
Por exemplo, a seguinte instrução modificada:
conn.execute update Contagens set counts='&counts&' onde num=&num& e Atime='&now()&'
O lado esquerdo do sinal de igual é o nome do campo, e o lado direito do sinal de igual é o nome da variável passada. O campo de contagem é do tipo texto, portanto, devem ser adicionadas aspas simples antes e depois de escrever. seja escrevendo ou consultando. Na instrução de pesquisa subsequente, o campo num é do tipo numérico, portanto, não há aspas simples antes e depois dele.
O mais importante é consultar por ID. O campo ID é único e do tipo numérico. Obviamente não pode haver aspas simples antes e depois na consulta do número do ID.
conn.execute update Contagens set counts='&counts&' where id='&id&' 'maneira errada de escrever
conn.execute update Contagens set counts='&counts&' where id=&id 'Maneira correta de escrever
2. ACESSE a conexão do banco de dados
Normalmente, existem duas maneiras de se conectar a bancos de dados. Os novatos basicamente não sabem qual maneira usar, ou qual usar em quais circunstâncias, ou não conhecem os princípios de ambos.
① Conecte-se diretamente aos arquivos do banco de dados
Definir conexão = Server.CreateObject(ADODB.Connection)
conn.Open DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=&Server.MapPath(banco de dados/yanhang.mdb)
②Conecte o arquivo do banco de dados por meio da fonte de dados
Definir conexão = Server.CreateObject(ADODB.Connection)
conn.Open Provider=Microsoft.Jet.OLEDB.4.0 Fonte de dados=&Server.MapPath(banco de dados/yanhang.mdb)
Então, qual dos dois é melhor? Claro que é o segundo, porque o primeiro é que o navegador do cliente realmente lê o banco de dados diretamente, então a segurança é muito diferente. que usa dados do servidor A ferramenta de origem está conectada e não tem nada a ver com o cliente, portanto o banco de dados não será exposto ao cliente e o fator de segurança é muito maior.
Aplicação do programa correspondente do banco de dados ACCESS: ① Conecte-se diretamente aos arquivos do banco de dados
conn.Open DRIVER={Driver do Microsoft Access (*.mdb)}; DBQ=&Server.MapPath(banco de dados/yanhang.mdb)
Para este método de conexão com o banco de dados, adicione a instrução:
set rs=server.createobject(adodb.recordset) '(escrita correta)
rs.open selecione * de dndj,conn,1,3
rs.addnew
rs(bh) = bh
rs(bm) = bm
rs(xm) = xm
rs(xsq) = xsq
rs.atualização
rs.fechar
definir rs = nada
set rs=server.createobject(adodb.recordset) '(escrita errada)
sql=inserir em dndj(bh,bm,xm,xsq) valores('bh','bm','xm','xsq')
rs.open sql,conn,1,3
Aplicação do programa correspondente do banco de dados ACCESS: ② Conecte arquivos de banco de dados por meio de fontes de dados
conn.Open Provider=Microsoft.Jet.OLEDB.4.0 Fonte de dados=&Server.MapPath(banco de dados/yanhang.mdb)
Para este método de conexão com o banco de dados, adicione a instrução:
conn.execute inserir em dndj(bh,bm,xm,xsq) valores('&bh&','&bm&','&xm&','&xsq&') '(escrita correta)
set rs=server.createobject(adodb.recordset) '(escrita errada)
sql=inserir em dndj(bh,bm,xm,xsq) valores('bh','bm','xm','xsq')
rs.open sql,conn,1,3
3. Aplicação de aspas duplas
Normalmente escrevemos um super link como este <a href=abc.asp?id=<%=rs(id)%>>super link</a>
Mas e se esse hiperlink for compilado em asp?
response.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(escrita correta)
response.write <a href='abc.asp?id=&rs(id)&'>Super Connection</a> '(escrita correta)
response.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(escrita correta)
response.write <a href=abc.asp?id=<%=rs(id)%>>Super conexão</a> '(escrita errada)
response.write <a href=abc.asp?id=&rs(id)&>Super Connection</a> '(escrita errada)
O formulário é compilado em asp <input type=text name=id value=<%rs(id)%> />
response.write <input type=text name=id value=&rs(id)& /> '(escrita correta) Nota: Há três aspas duplas aqui
response.write <input type='text' name='id' value='&rs(id)&' /> '(escrita correta)
response.write <input type=text name=id value=&rs(id)& /> '(escrita correta)
response.write <input type=text name=id value=<%=rs(id)%> /> '(escrita errada)
response.write <input type=text name=id value=&rs(id)& /> '(escrita errada)
4. Vários métodos para evitar o download do banco de dados ACCESS
Muitos sites dinâmicos fazem uso extensivo de bancos de dados, e o banco de dados tornou-se naturalmente o arquivo principal de um site. Depois que o banco de dados for baixado ilegalmente, é muito provável que pessoas mal-intencionadas destruam o site. Ou roubar informações.
Os métodos fornecidos abaixo são aplicáveis a usuários que usam espaço de host virtual e usuários com direitos de controle do IIS!
1: A compra de espaço de host virtual é adequada para quem não tem controle IIS
1: Use sua imaginação para modificar o nome do arquivo do banco de dados
Este é o mais básico. Não acho que haja muitas pessoas com preguiça de alterar o nome do arquivo do banco de dados agora, certo? Quanto ao que mudar, depende de você. Pelo menos, certifique-se de que o nome do arquivo seja complexo e indecifrável. É claro que, neste momento, o diretório onde seu banco de dados está localizado não pode ter permissões de navegação no diretório!
2: Altere o sufixo do nome do banco de dados para ASA, ASP, etc.
Ouvi dizer que isso é muito popular, mas testei várias vezes e descobri que não é o ideal. Se você realmente deseja evitar downloads, é necessário adicionar alguns campos binários e outras configurações. complexo (se o seu banco de dados tiver muitos. Nesse caso, esse método não é realmente muito bom)
3: Adicione # antes do nome do banco de dados
Basta adicionar # ao nome frontal do arquivo de banco de dados e, em seguida, modificar o endereço do banco de dados no arquivo de conexão do banco de dados (como conn.asp). O princípio é que durante o download, apenas a parte anterior ao sinal # pode ser reconhecida, e as seguintes partes serão removidas automaticamente. Por exemplo, se você deseja fazer o download: http://bbs.bccn.net/date/#123. .mdb (supondo que exista). Seja IE ou FLASHGET, etc., o que você obtém é http://bbs.bccn.net/date/index.htm
Além disso, reter alguns espaços no nome do arquivo do banco de dados também desempenha um papel semelhante. Devido à particularidade do protocolo HTTP para resolução de endereços, os espaços serão codificados como% 20, como http://bbs.bccn.net/date. /123 456.mdb
Ao baixar, http://bbs.bccn.net/date/123%20456.mdb. Nosso diretório não contém o arquivo 123%20456.mdb, portanto, o download é inválido. Mesmo se você expor o endereço do banco de dados, outras pessoas geralmente não poderão baixá-lo. É melhor usar #+espaço em ambos os métodos, como http. : //bbs.bccn.net/date/#123 456.mdb
4: Criptografe o banco de dados
Após usar o ACCESS para abrir seu banco de dados em modo exclusivo, vá em Ferramentas-Segurança-Defina a senha do banco de dados e modifique a página de conexão do banco de dados após a criptografia, como:
conn.open driver={driver de acesso microsoft (*.mdb)};uid=admin;pwd=senha do banco de dados;dbq=caminho do banco de dados
Após esta modificação, mesmo que o banco de dados seja baixado, outras pessoas não poderão abri-lo (desde que a senha na página de conexão do seu banco de dados não tenha vazado)
Mas é importante notar que, como o mecanismo de criptografia do banco de dados Access é relativamente simples, mesmo que uma senha seja definida, a descriptografia é fácil. O sistema de banco de dados forma uma string criptografada fazendo XOR da senha inserida pelo usuário com uma chave fixa e a armazena na área do arquivo *.mdb a partir do endereço &H42. Assim, um bom programador pode facilmente fazer um pequeno programa com dezenas de linhas para obter facilmente a senha de qualquer banco de dados Access. Portanto, enquanto o banco de dados for baixado, sua segurança permanecerá desconhecida.
Dois: Tenha controle de host (é claro que as configurações do espaço virtual ainda podem ser usadas aqui)
5: O banco de dados é colocado fora do diretório WEB
Se o seu diretório WEB for e:/webroot, você pode colocar o banco de dados na pasta e:/data e acessar a página de conexão do banco de dados em e:/webroot.
Modifique o endereço de conexão do banco de dados para o formato: ../data/#123 456.mdb, para que o banco de dados possa ser chamado normalmente, mas não possa ser baixado porque não está no diretório WEB! Este método geralmente é adequado para usuários que adquirem espaço virtual.
6: Use fonte de dados ODBC.
Em programação como ASP, se possível, você deve tentar usar fontes de dados ODBC e não escrever o nome do banco de dados no programa, caso contrário, o nome do banco de dados será perdido junto com a confidencialidade do código-fonte ASP.
Por exemplo:
conn.open driver={Driver do Microsoft Access (*.mdb)};dbq=&Server.MapPath(../123/abc/asfadf.mdb)
Pode-se observar que por mais estranho que seja o nome do banco de dados, por mais profundo que seja o diretório oculto, depois que o código-fonte ASP for comprometido, ele poderá ser facilmente baixado.
Se você usar a fonte de dados ODBC, não haverá esse problema: conn.open nome ODBC-DSN, mas isso é mais irritante. Se o diretório for movido, a fonte de dados deverá ser redefinida!
7: Adicione mapeamento estendido do nome do banco de dados, como MDB
Este método é obtido modificando as configurações do IIS. É adequado para amigos que têm controle do IIS, mas não é adequado para usuários que compram hosts virtuais (a menos que o administrador o tenha configurado). Acho que esse método é o melhor atualmente. Com apenas uma alteração, todo o banco de dados do site pode ser impedido de ser baixado. Os downloads podem ser evitados mesmo se o endereço de destino for exposto sem modificar o código.
configurar:
Adicione a análise do aplicativo do arquivo .mdb em Propriedades do IIS --- Diretório inicial --- Configuração --- Mapeamento --- Extensão do aplicativo. Observe que a DLL (ou EXE, etc.) selecionada aqui não parece ser arbitrária. Se a seleção não for apropriada, o arquivo MDB ainda pode ser baixado. Observe que é melhor não selecionar asp.dll, etc. Você pode testar você mesmo
Após esta modificação, baixe o banco de dados como: http://bbs.bccn.net/data/dvbbs6.mdb. Ele aparecerá (erros como 404 ou 500)
8: Vantagens de usar .net
Mu Niao de Dongwang escreveu uma ferramenta anti-hotlink WBAL para evitar downloads ilegais de arquivos. Lembro que um especialista neste fórum publicou uma vez um plug-in anti-download de banco de dados, que é um .dll carregado no IIS.
Porém, aquele apenas impede downloads não locais e não tem a função de realmente impedir downloads de bancos de dados. Mas este método é semelhante ao 5º método
Você pode modificar o arquivo .NET para que não possa ser baixado localmente!
Entre esses métodos, apenas o 7º e o 8º métodos podem ser alterados uniformemente. Após modificar a configuração uma vez, o download do banco de dados de todo o site pode ser impedido. Os outros vários métodos requerem a modificação do nome do banco de dados e do arquivo de conexão, respectivamente. mais problemático, mas para amigos anfitriões virtuais só pode fazer isso!
Na verdade, o 6º método deveria ser uma extensão do 5º método, que pode realizar funções especiais. No entanto, para hosts que não suportam .net ou têm medo de configurações problemáticas, é melhor usar o 5º método diretamente e o 5º método. O 6º método é usado por padrão. Método, você ainda pode publicar copiando e conectando-se ao fórum ou livro de visitas do mesmo host e depois clicando para fazer o download (porque essas páginas de referência são do mesmo host)
Cada um desses métodos tem seus prós e contras, portanto, use-os seletivamente. Esses métodos não são absolutamente seguros. Os administradores de sites também precisam prestar atenção à segurança de alguns sistemas e à segurança de escrever o próprio código ASP. Caso contrário, ainda é possível que alguém baixe ou modifique o banco de dados.