php表单到Oracle-如何在插入之前处理表单数据
当我从PHP表单插入或更新Oracle数据库时,我捕获表单数据并通过一个函数对其进行清理,该函数对数据进行修剪、条带斜杠和htmlspecialcharacters处理 我想保持符号,单引号和双引号在数据库中的原样 但是最近我想知道这个函数。我原以为这有助于sql注入,但OCI8通过绑定变量避免了这一点-我就是这么做的 如何处理单引号 是否允许单引号终止字符串 我想我可能需要重写一下这个函数——我需要它吗 有人能帮我检查输入($data)并给我反馈吗php表单到Oracle-如何在插入之前处理表单数据,php,html,oracle,forms,oracle11g,Php,Html,Oracle,Forms,Oracle11g,当我从PHP表单插入或更新Oracle数据库时,我捕获表单数据并通过一个函数对其进行清理,该函数对数据进行修剪、条带斜杠和htmlspecialcharacters处理 我想保持符号,单引号和双引号在数据库中的原样 但是最近我想知道这个函数。我原以为这有助于sql注入,但OCI8通过绑定变量避免了这一点-我就是这么做的 如何处理单引号 是否允许单引号终止字符串 我想我可能需要重写一下这个函数——我需要它吗 有人能帮我检查输入($data)并给我反馈吗 <?php require('conn
<?php
require('conn.php');
require('db.php');
$conn = db_connect();
$form1 = check_input($_POST['issueType']);
$form2 = check_input($_POST['summary']);
$form3 = check_input($_POST['endPointName']);
$form4 = check_input($_POST['contactFirstName']);
$form5 = check_input($_POST['contactLastName']);
$form6 = check_input($_POST['contactEmail']);
$form7 = check_input($_POST['contactPhone']);
$form8 = check_input($_POST['description']);
// trims data, strips extra characters, converts special characters to HTML entities
function check_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$insert = "INSERT INTO VTC_HELPDESK_ISSUES (ISSUE_TYPE, ISSUE_SHORT,ENDPOINT_NAME,CONTACT_FIRST_NAME,CONTACT_LAST_NAME, CONTACT_EMAIL,CONTACT_PHONE,ISSUE_DESC,SOLUTION,OTHER_COMPANY_TICKET_NUM,RESOLVED,AGENCY) VALUES (:issueType, :summary,:endPointName, :contactFirstName, :contactLastName,:contactEmail, :contactPhone, :description, :solution, :ticketNumber, :resolved, :agency)";
$send = oci_parse($conn, $insert);
//Binding makes it harder to submit anything directly to the Oracle DB
oci_bind_by_name($send, ':issueType', $form1);
oci_bind_by_name($send, ':summary', $form2);
oci_bind_by_name($send, ':endPointName', $form3);
oci_bind_by_name($send, ':contactFirstName', $form4);
oci_bind_by_name($send, ':contactLastName', $form5);
oci_bind_by_name($send, ':contactEmail', $form6);
oci_bind_by_name($send, ':contactPhone', $form7);
oci_bind_by_name($send, ':description', $form8);
oci_execute($send);
因为“绑定对Oracle数据库性能很重要,也是避免SQL注入安全问题的一种方法”*,所以您可以停止对这些字段执行自己的检查输入()。具体来说,您的引号和符号将丢失到htmlspecialchars()
因为“绑定对Oracle数据库性能很重要,也是避免SQL注入安全问题的一种方法”*,所以您可以停止对这些字段执行自己的检查输入()。具体来说,您的引号和符号将丢失到htmlspecialchars()
通过绑定查询中的变量,您正在执行所有必要的操作,以防止数据库被注入。check_input()
函数的目标是什么?标准做法是将数据精确地放入数据库中,并在输出时转义,因为您永远无法100%确定输出将显示在何处。与Visual Basic表单或API输出相比,网页将具有不同的卫生规则。@MonkeyZeus-我的目标只是为了安全,在数据库中不包含太多时髦的字符,并且在网页上显示它们,使其可读性和可更新性。@MonkeyZeus-因此,如果我允许在数据库中使用单引号,它们将显示在网页上,但是,当我从数据库获取数据并在更新页面上预填充时,字段会在引号处终止-???当显示网页的数据时,然后像这样使用和使用它echo htmlEntes($row['DB_COLUMN',ENT_QUOTES)代码>仅此而已。通过绑定查询中的变量,您正在执行所有必要的操作,以防止数据库被注入。check_input()
函数的目标是什么?标准做法是将数据精确地放入数据库中,并在输出时转义,因为您永远无法100%确定输出将显示在何处。与Visual Basic表单或API输出相比,网页将具有不同的卫生规则。@MonkeyZeus-我的目标只是为了安全,在数据库中不包含太多时髦的字符,并且在网页上显示它们,使其可读性和可更新性。@MonkeyZeus-因此,如果我允许在数据库中使用单引号,它们将显示在网页上,但是,当我从数据库获取数据并在更新页面上预填充时,字段会在引号处终止-???当显示网页的数据时,然后像这样使用和使用它echo htmlEntes($row['DB_COLUMN',ENT_QUOTES)代码>仅此而已。