<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Learn Software Development &#187; Databases</title>
	<atom:link href="http://learnsoftwareprocesses.com/category/databases/feed/" rel="self" type="application/rss+xml" />
	<link>http://learnsoftwareprocesses.com</link>
	<description>All about the processes involved in software development</description>
	<lastBuildDate>Sun, 20 May 2012 19:17:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>What are different methods and techniques used for security testing at the data base level?</title>
		<link>http://learnsoftwareprocesses.com/2012/04/03/what-are-different-methods-and-techniques-used-for-security-testing-at-the-data-base-level/</link>
		<comments>http://learnsoftwareprocesses.com/2012/04/03/what-are-different-methods-and-techniques-used-for-security-testing-at-the-data-base-level/#comments</comments>
		<pubDate>Tue, 03 Apr 2012 17:10:39 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Application defense]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Database security]]></category>
		<category><![CDATA[Information security]]></category>
		<category><![CDATA[Processes]]></category>
		<category><![CDATA[Security techniques]]></category>
		<category><![CDATA[Software processes]]></category>
		<category><![CDATA[Software testing]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=1046</guid>
		<description><![CDATA[<p>Many of the traditional methods and techniques for security testing at the database level are still in use but, their efficiency has reduced somewhat. This is probably due to the increased sophistication of attacking methods and techniques, and also because of the focus of the traditional methods and techniques being reliant on the architecture of [...]]]></description>
			<content:encoded><![CDATA[<p>Many of the traditional methods and techniques for security testing at the database level are still in use but, their efficiency has reduced somewhat. This is probably due to the increased sophistication of attacking methods and techniques, and also because of the focus of the traditional methods and techniques being reliant on the architecture of the computer networks, scanning of the ports and firewalls etc. These methods and techniques are governed by the notion of the protection of the software and networking systems from the vulnerabilities from the attacks. These methods establish this purpose by the means of identification of the bugs and defending off a recognized parameter.<br />
It is without any doubt that the database of an application is a critical part of it, and it is also the most vulnerable part of the application. For proper safety, the web application should be subjected to rigorous security testing as well as risk analysis. There are 2 typical approaches for carrying out the security testing at the data base level:<br />
1. Inside out approach and<br />
2. Outside in approach.<br />
The latter one is more prominent and makes use of a firewall. The firewall is implemented so as to protect the LAN and not let external attacks in (which have the potential of hijacking the network or individual machines in the network). It does so by blocking the different types of the traffic coming to that particular web application. This approach probes the local area network using a port scanner in order to determine which of its ports are open and what services are being generated through those ports. But, this approach has also got a drawback, or rather it is a security risk rather than calling it a drawback; and that is that the traditional services that were protected with the firewall now have to be implemented with software system having poor security. There is no such security testing technique at database level which is 100 percent efficient. Even a reasonable security has got many pitch falls.<br />
From all the techniques, the risk based security testing technique continues to top the list. Before choosing any approach for the security testing at the database level you should first know how the following aspects of the database of that application work in accordance with the stated security objectives:<br />
1. Data base architecture<br />
2. Application technologies that have been used in making the software application.<br />
3. Configurations of the different components of the software system or application.<br />
4. Critical assets<br />
5. Storage of sensitive data and<br />
6. Business critical inter connections<br />
The security testing at the data base level involves the following activities:<br />
1. Estimating the potential attack vectors and making use of the potential documentation so that the audit activities can be focused up on the critical elements of the data base.<br />
2. Consultation with the other team members about the business goals and security requirements and other aspects which are in a way related to the data confidentiality, availability, provability and integrity etc.<br />
3. Knowledge about the following:<br />
(a) Intra database data flow<br />
(b) Key database components<br />
(c) Database architecture<br />
(d) Integral core technologies implemented in the software system or application<br />
(e) Integral core operational processes<br />
4. Preparation of the formal reporting objectives. The formal repot of the testing covers the results of the gapa analysis, mitigation road map and other relevant findings like peer group bench marking, executive summaries, root cause analysis, technical summaries and good practice benchmarking etc.<br />
5. Deciding on the formal objectives<br />
Database level security testing is very essential since no application can operate without having access to its database.</p>
<table>
<tr>
<td>Handbook of Database Security</td>
<td>Implementing Database Security and Auditing</td>
<td>Database Security</td>
</tr>
<tr>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=1441943056&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=1555583342&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
<td><iframe src="http://rcm.amazon.com/e/cm?t=learnsoftware-20&#038;o=1&#038;p=8&#038;l=as1&#038;asins=1435453905&#038;ref=qf_sp_asin_til&#038;fc1=000000&#038;IS2=1&#038;lt1=_blank&#038;m=amazon&#038;lc1=0000FF&#038;bc1=000000&#038;bg1=FFFFFF&#038;f=ifr" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe>
</td>
</tr>
</table>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2012/04/03/what-are-different-methods-and-techniques-used-for-security-testing-at-the-data-base-level/' addthis:title='What are different methods and techniques used for security testing at the data base level? '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2012/04/03/what-are-different-methods-and-techniques-used-for-security-testing-at-the-data-base-level/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Object Query Language (OQL)</title>
		<link>http://learnsoftwareprocesses.com/2009/09/14/object-query-language-oql/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/14/object-query-language-oql/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 11:26:17 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Databases]]></category>
		<category><![CDATA[Language]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Object Oriented Databases]]></category>
		<category><![CDATA[Object Query Language]]></category>
		<category><![CDATA[OQL]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=355</guid>
		<description><![CDATA[<p>Object Query Language (OQL) is a query language standard for object-oriented databases modelled after SQL. OQL was developed by the Object Data Management Group (ODMG). Because of its overall complexity no vendor has ever fully implemented the complete OQL. OQL has influenced the design of some of the newer query languages like JDOQL and EJB [...]]]></description>
			<content:encoded><![CDATA[<p>Object Query Language (OQL) is a query language standard for object-oriented databases modelled after SQL. OQL was developed by the Object Data Management Group (ODMG). Because of its overall complexity no vendor has ever fully implemented the complete OQL. OQL has influenced the design of some of the newer query languages like JDOQL and EJB QL, but they can&#8217;t be considered as different flavours of OQL, and should be treated separately.</p>
<p>The key Differences Between OQL and SQL :<br />
- OQL supports object referencing within tables. Objects can be nested within objects.<br />
- Not all SQL keywords are supported within OQL. Keywords that are not relevant to Netcool/Precision IP have been removed from the syntax.<br />
- OQL can perform mathematical computations within OQL statements.</p>
<p>General Rules of OQL :<br />
- All complete statements must be terminated by a semi-colon.<br />
- A list of entries in OQL is usually separated by commas but not terminated by a comma.<br />
- Strings of text are enclosed by matching quotation marks.</p>
<p>OQL was designed to be object-oriented. Queries are specified using objects and their attributes (data-members). Similarly, queries return sets of objects. The complex relationships in an object model can be easily navigated, using the same class-member paradigm, used by object-oriented programming languages. This can often lead to increased performance over SQL, where resource-consuming join processes are necessary to capture relationships. Another big advantage is, that table names and column names are not necessary in the query strings, because queries are formulated using class names and attribute names and no mapping knowledge is necessary in the application.<br />
OQL may be used as an embedded language or as a standalone query language. Both of these are supported by OpenAccess. As an embedded language, OQL queries can be used directly in your application programs. Programs can embed OQL queries, and receive results in the native data types of the programming language being used. OQL statements are simply text strings, which means that the standard string representation of your programming language is used to express the query.</p>
<p>Simple query :<br />
The following example illustrates how one might retrieve the CPU-speed of all PCs with more than 64MB of RAM from a fictional PC database:<br />
SELECT pc.cpuspeed<br />
FROM PCs pc<br />
WHERE pc.ram > 64</p>
<p>Query with grouping and aggregation :<br />
The following example illustrates how one might retrieve the average amount of RAM on a PC, grouped by manufacturer:<br />
SELECT manufacturer, AVG(SELECT part.pc.ram FROM partition part)<br />
FROM PCs pc<br />
GROUP BY manufacturer: pc.manufacturer<br />
Note the use of the keyword partition, as opposed to aggregation in traditional SQL.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2009/09/14/object-query-language-oql/' addthis:title='Object Query Language (OQL) '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/14/object-query-language-oql/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Data Binding</title>
		<link>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-data-binding/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-data-binding/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 06:52:18 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Data Model]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Concepts]]></category>
		<category><![CDATA[Data Binding]]></category>
		<category><![CDATA[Objects]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=351</guid>
		<description><![CDATA[<p>Data binding is the process that establishes a connection between the application UI and business logic. If the binding has the correct settings and the data provides the proper notifications, then, when the data changes its value, the elements that are bound to the data reflect changes automatically. Data binding can also mean that if [...]]]></description>
			<content:encoded><![CDATA[<p>Data binding is the process that establishes a connection between the application UI and business logic. If the binding has the correct settings and the data provides the proper notifications, then, when the data changes its value, the elements that are bound to the data reflect changes automatically. Data binding can also mean that if an outer representation of the data in an element changes, then the underlying data can be automatically updated to reflect the change. A typical use of data binding is to place server or local configuration data into forms or other UI controls.</p>
<p>Basic Data Binding Concepts :<br />
Data binding is based on a component architecture that consists of four major pieces : the data source object (DSO), data consumers, the binding agent, and the table repetition agent. Data source objects provide the data to a page, data-consuming HTML elements display the data, and the agents ensure that both the provider and the consumer are synchronized.</p>
<p>Direction of the Data Flow :<br />
The data flow of a binding can go from the binding target to the binding source and/or from the binding source to the binding target.<br />
- One Way binding causes changes to the source property to automatically update the target property, but changes to the target property are not propagated back to the source property. This type of binding is appropriate if the control being bound is implicitly read-only.<br />
- Two Way binding causes changes to either the source property or the target property to automatically update the other. This type of binding is appropriate for editable forms or other fully-interactive UI scenarios. Most properties default to  One Way binding, but some dependency properties default to Two Way binding.<br />
- OneWayToSource is the reverse of  OneWay binding; it updates the source property when the target property changes. One example scenario is if you only need to re-evaluate the source value from the UI.</p>
<p>Data Source Objects<br />
To bind data to the elements of an HTML page in Windows Internet Explorer, a DSO must be present on that page. DSOs implement an open specification that leaves it up to the DSO developer to determine the following:<br />
- How the data is transmitted to the page. A DSO can use any transport protocol it chooses. This might be a standard Internet protocol, such as HTTP or simple file I/O. A DSO also determines whether the transmission occurs synchronously or asynchronously. Asynchronous transmission is preferred, because it provides the most immediate interactivity to the user.<br />
- How the data set is specified. A DSO might require an Open Database Connectivity (ODBC) connection string and an Structured Query Language (SQL) statement, or it might accept a simple URL.<br />
- How the data is manipulated through scripts. Since the DSO maintains the data on the client, it also manages how the data is sorted and filtered.<br />
- Whether updates are allowed.</p>
<p>Data Consumers<br />
Data consumers are elements on the HTML page that are capable of rendering the data supplied by a DSO. Elements include many of those intrinsic to HTML, as well as custom objects implemented as Java applets or Microsoft ActiveX Controls.<br />
A DSO typically exposes this functionality through an object model that is accessible to scripts.</p>
<p>Binding Agents<br />
The binding and repetition agents are implemented by MSHTML.dll, the HTML viewer for Internet Explorer, and they work completely behind the scenes. When a page is first loaded, the binding agent finds the DSOs and the data consumers among those elements on the page. Once the binding agent recognizes all DSOs and data consumers, it maintains the synchronization of the data that flows between them. </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2009/09/12/introduction-to-data-binding/' addthis:title='Introduction to Data Binding '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-data-binding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Database Concurrency</title>
		<link>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-concurrency/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-concurrency/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 06:48:19 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Database Concurrency]]></category>
		<category><![CDATA[Multiple Access]]></category>
		<category><![CDATA[Optimistic]]></category>
		<category><![CDATA[program]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=349</guid>
		<description><![CDATA[<p>DATABASE CONCURRENCY: &#8211; Database concurrency is the particular situation when a single database is being accessed by multiple programs. Databases, by design in most cases are shared resources, but in this case, they are shared across multiple applications. Database concurrency controls ensure that transactions occur in an ordered fashion. The main job of these controls [...]]]></description>
			<content:encoded><![CDATA[<p>DATABASE CONCURRENCY: &#8211; Database concurrency is the particular situation when a single database is being accessed by multiple programs. Databases, by design in most cases are shared resources, but in this case, they are shared across multiple applications.<br />
Database concurrency controls ensure that transactions occur in an ordered fashion. The main job of these controls is to protect transactions issued by different users/applications from the effects of each other. They must preserve the four characteristics of database transactions: atomicity, isolation, consistency and durability. Concurrency control is one of the main issues in the study of real time database systems. In addition to satisfying consistency requirements as in traditional database systems, a real time transaction processing system must also satisfy timing constraints.</p>
<p>Conflicts between transactions can be detected in two ways.<br />
Pessimistic method detects conflicts before making access to the data object. When a transaction requests access to some data item, the concurrency control manager will examine this request and will determine whether to grant the request or not.<br />
Optimistic schemes are designed to get rid of the locking overhead. They are optimistic in the sense that they take into account the explicit assumption that conflicts among transactions are rare events. The task of concurrency control is deferred until the end of transaction when some checking for potential conflicts has to take place and will be resolved accordingly, taking into consideration the amount of progress that has been done and the nature of conflict with transactions.<br />
When concurrency control detects a conflict among some concurrent transactions accessing the same object, a conflict resolution mechanism needs to be put on. Concurrency control manager decides which transaction (victim) to penalize (the lock holder or the requester) and chooses an appropriate action and suitable timing. Two possible actions are most used: Blocking (wait) and abort (restart). In pessimistic concurrency control either blocking or abort can be used to resolve the conflict. However, in optimistic concurrency control only aborting is appropriate since conflict has been detected after the transaction has accessed the data object and performed some computation.</p>
<p>OPTIMISTIC CONCURRENCY CONTROL : The basic idea of an optimistic concurrency control mechanism is that the execution of a transaction consists of three phases: read, validation and write phases. For all optimistic concurrency control (OCC) schemes a conflict is detected after the data object has been accessed. In the OCC, conflict detection and resolution are both done at the certification time when a transaction completes its execution; it requests the concurrency control manager to validate all its accessed data objects. If it has not yet been marked for abort, it enters the commit phase where it writes all its updates to the database.</p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-concurrency/' addthis:title='Introduction to Database Concurrency '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-concurrency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Database Encryption</title>
		<link>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/</link>
		<comments>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 06:42:34 +0000</pubDate>
		<dc:creator>ashish</dc:creator>
				<category><![CDATA[Data]]></category>
		<category><![CDATA[Databases]]></category>
		<category><![CDATA[Encryption]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Database Encryption]]></category>

		<guid isPermaLink="false">http://learnsoftwareprocesses.com/?p=347</guid>
		<description><![CDATA[<p>Encryption can provide strong security for data, but is that enough ? Data in a database can be accessed by many systems, but developing a database encryption strategy must take many factors into consideration. Where should the encryption be performed, for example — in the database, or in the application where the data originates? Who [...]]]></description>
			<content:encoded><![CDATA[<p>Encryption can provide strong security for data, but is that enough ? Data in a database can be accessed by many systems, but developing a database encryption strategy must take many factors into consideration. Where should the encryption be performed, for example — in the database, or in the application where the data originates? Who should have access to the encryption keys? How much data must be encrypted to provide security? What’s an acceptable trade-off between data security and application performance?<br />
Data encryption is a process of converting stored or transmitted data to a coded form in order to prevent it from being read by unauthorized person. It is an application of a specific algorithm to alter the appearance of data, making it incomprehensible to those who are not authorized to see the information.<br />
There are 2 types of encryption algorithm: -<br />
- Secret key or Symmetric key algorithm: -In this encryption algorithm, a single secret or private key is shared between the sender and receiver. The sender encrypts this using this key and receiver decrypts it using the same key. It is highly assumed that no one else knows the key.<br />
- Public key or Asymmetric key algorithm: &#8211; In this algorithm, every sender and receiver has a pair of keys. One is made public to the network and called public key and the other is kept private to that node called private key. The pair is such made that if the data is encrypted with one of the keys in the pair, it can only be decrypted with other key in the pair. When a sender has to send, it encrypts the data with receiver’s public key &#038; the receiver decrypts it with its private key.</p>
<p>Advice on how to overcome some of the challenges in database encryption:<br />
- Regulatory drivers : Advanced security through database encryption is required across many different sectors, and increasingly to comply with regulatory mandates.<br />
One approach that can help companies address the encryption challenges associated with regulation is the defense-in-depth principle which advocates many layers to strong security – ranging from physical security and access controls to rights assignment and network security, including firewalls and, crucially, encryption of both data at rest and in transit.<br />
- Overcoming key management issues<br />
It is important that database encryption be accompanied by key management; however, statistics show that this is also the main barrier to database encryption. It is well-recognized that key use should be restricted and that key backup is extremely important. An additional best practice rule of encryption is that the encrypted key should never be stored alongside the data it was used to encrypt. Placing encryption keys within the HSM enforces this policy.<br />
- Separation of duties and dual control<br />
Many organizations pay close attention to separation of duties and dual control, which is required to pass audits to show that there are internal controls protecting against rogue administrators or unauthorized employees and is often required by the various regulatory requirements discussed above. </p>
<div class="addthis_toolbox addthis_default_style " addthis:url='http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/' addthis:title='Introduction to Database Encryption '  ><a class="addthis_button_facebook_like" fb:like:layout="button_count"></a><a class="addthis_button_tweet"></a><a class="addthis_button_google_plusone" g:plusone:size="medium"></a><a class="addthis_counter addthis_pill_style"></a></div>]]></content:encoded>
			<wfw:commentRss>http://learnsoftwareprocesses.com/2009/09/12/introduction-to-database-encryption/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

